EditingStyleForrorrat IndexPath - 在iOS 5中的触发,在iOS 6中不会触发
-
11-12-2019 - |
题
我有一个简单的主设备和细节视图控制器与两个SEGUES连接,一个用于“显示细节”,一个用于“添加新”。
- “显示详细信息”SEGUE与SETEDITING的详细视图控制器:NO。
- 点击“+”(添加图标)SEGUE与SETEDITING的详细视图控制器:是
iOS 5.1:“+”在我期望时工作,详细信息页面处于编辑模式和EditingStyleForrowatIndexpath触发,以显示插入和删除指示符。
iOS 6.0:“+”使转换到详细信息页面,但EditingStyleForrowIndexpath从未触发。设置的其他代码:是执行的。DidselectRoyatindexpath做火(委托= self)。
在详细信息页面上,编辑模式在两种情况下都在预期工作。
任何想法?
.// Master.m if([[segue identifier] isEqualToString:@"NewRecipe"]) { DetailViewController *detailViewController = [segue destinationViewController]; // stuff detailViewController.recipe = r; detailViewController.delegate = self; detailViewController.editing = YES; } // Detail.m -(void)setEditing:(BOOL)flag animated:(BOOL)animated { if (flag) { [self.tableView setEditing:flag animated:YES]; [self.tableView beginUpdates]; // the row does get added [self.tableView insertRowsAtIndexPaths:@[pathToAdd] withRowAnimation:UITableViewRowAnimationAutomatic]; // datasource gets updated here [self.tableView endUpdates]; .... } }
解决方案
我想出来了。我不知道为什么这是解决方案,我希望这不会用更糟糕的代码替换错误的代码。
Master.m
// iOS 5 -- this is OK
detailViewController.editing = YES;
.
对于iOS 6,我需要detailviewcontroller来调用委托方法来确定是否设置:是。
Master.m
-(BOOL)isNewRecipe {
return (_isNewRecipe == 1);
}
Detail.m
if ([self.delegate isNewRecipe]) {
[self setEditing:YES];
}
. 不隶属于 StackOverflow