我试图用手指滑动删除tableView
上的单元格(就像最近的调用一样)。我知道我需要实施:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
NSArray *index = [[NSArray alloc]initWithObjects:indexPath];
[self.tableView deleteRowsAtIndexPaths:index withRowAnimation: UITableViewRowAnimationNone];
}
但是当我滑动手指时,我开始使用此功能,而当我尝试删除单元格时,第二行会出现错误:
由于未捕获的异常而终止应用 'NSInternalInconsistencyException',原因:'无效更新:无效 第0节中的行数。包含在中的行数 更新后的现有部分(4)必须等于数量 更新(4)之前该部分中包含的行,加号或减号 从该部分插入或删除的行数(插入0, 1删除)。
有人可以帮忙吗?
答案 0 :(得分:2)
致电时
[self.tableView deleteRowsAtIndexPaths:index withRowAnimation: UITableViewRowAnimationNone];
表视图将尝试重新加载,然后调用委托方法
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
由于您删除了一行,为了使必要的动画正常工作,表格视图要求使用与 deleteRowsAtIndexPaths:withRowAnimation:删除的行数相同的行数进行更改。您获取的错误消息尝试解释该依赖项。它表示你在表格视图中有 4 行,你删除了 1 ...但是当表格视图询问你删除后有多少行时,你说 4 ,而不是 4-1 = 3 它预期......然后它开始关闭,大概是因为it did not want to live in a world where the laws of natural numbers could not explain reality。
例如,如果您使用 NSArray * 来填充tableView,则应该在调用 deleteRowsAtIndexPaths:withRowAnimation:<时同时从数组中删除相应的对象: /强>