使用commitEditingStyle从 Uitableview 删除行时,我的应用程序崩溃时出现此错误。
断言失败 - [UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-1912.3/UITableView.m:1046。终止 应用程序由于未捕获异常NSInternalInconsistencyException', 原因:'无效更新:第0节中的行数无效 更新后现有部分中包含的行数(2) 必须等于之前该部分中包含的行数 更新(1),加上或减去插入或删除的行数 从该部分(0插入,1删除)和加号或减号 移入或移出该部分的行(0移入,0移出)。
这是我的代码:
- (void)tableView:(UITableView *)tv commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
// If row is deleted, remove it from the list.
if (editingStyle == UITableViewCellEditingStyleDelete) {
order *OrderObj= [appDelegate.orderArray objectAtIndex:[indexPath row]];
[appDelegate removeitem:OrderObj];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
} }
答案 0 :(得分:6)
您的tableView:numberOfRowsInSection:
在更新后返回错误值。检查删除前和删除后返回的值。它必须减少1。
答案 1 :(得分:6)
尝试更改这些行:
order *OrderObj= [appDelegate.orderArray objectAtIndex:[indexPath row]];
[appDelegate removeitem:OrderObj];
为:
[appDelegate.orderArray removeObjectAtIndex:[indexPath row]]; // assuming orderArray is NSMutableArray