我有一个显示对象NSMutableArray
的tableView,我目前正在尝试实现tableView:commitEditingStyle:forRowAtIndexPath:
方法。如果我注释掉[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
行,那么在更新UI之外一切正常。
这是我对该方法的实现:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
[self.modelClass removeObjectAtRow:indexPath.row];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
这是我得到的错误:
*** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-2280.1/UITableView.m:1060
其他问题有答案表明我需要将@[indexPath]
替换为[NSArray arrayWithObject:indexPath]
,而这只会出现同样的错误。
答案 0 :(得分:3)
问题可能在方法numberOfRowsInSection
中,所以,为了避免麻烦你应该:
在函数commitEditingStyle
中删除数组,数据库等中的数据。
减少当前行数。
[tableView beginUpdates];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject: indexPath] withRowAnimation:UITableViewRowAnimationFade];
[tableView endUpdates];
你的问题将得到解决!!!
答案 1 :(得分:2)
这是因为UITableView
在删除行后再次输入数据源方法numberOfRowsInSection
。确保它返回self.modelClass.count
中numberOfRowsInSection
的正确行数。