我有一个自定义控制器,用于管理tableView,一旦进入编辑模式,它会添加新行(用于插入新记录)。问题是刚刚添加的一行下面的行也与UITableViewCellEditingStyleInsert一起显示。我可以通过调用reloadData来修复显示问题,但是我松开了框架提供的炫酷动画:P
我也尝试使用延迟,但结果很糟糕:(
以下是我的重写方法:
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
[self.tableView setEditing:editing animated:animated];
[self.tableView beginUpdates];
NSIndexPath *path = [NSIndexPath indexPathForRow:2 inSection:0];
NSArray *paths = [NSArray arrayWithObject:path];
if (editing) {
GTMLoggerDebug(@"add row");
[self.tableView insertRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationAutomatic];
} else {
GTMLoggerDebug(@"remove row");
[self.tableView deleteRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationAutomatic];
}
[self.tableView endUpdates];
[self.tableView performSelector:@selector(reloadData) withObject:nil afterDelay:0.4];
}
想法?!
最佳答案
我知道这个问题有些陈旧,但是我遇到了同样的问题,这就是我解决的方法:
首先-不要呼叫[self.tableView setEditing:animated:]
,因为当您呼叫[super setEditing:animated:]
时已经被呼叫
下一步-在呼叫-beginUpdates
之前先呼叫[super setEditing:animated:]
下一步:摆脱您的reloadData。
这为我解决了问题,不再需要在应删除的位置插入。