我有一个管理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];
}
想法?!
答案 0 :(得分:0)
我知道这个问题有点陈旧,但我遇到了同样的问题,这就是我解决的问题:
首先 - 请不要拨打[self.tableView setEditing:animated:]
,因为在您拨打[super setEditing:animated:]
下一步 - 在致电-beginUpdates
[super setEditing:animated:]
下一步:摆脱你的reloadData。
这解决了我的问题,不再插入应该删除的地方。