我在iOS应用程序中添加了以下代码以从UITableViewController中删除表格单元格,但是我收到有关删除的错误。
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
if(editingStyle == UITableViewCellEditingStyleDelete){
[self.toDoItems removeObjectAtIndex:indexPath.row];
NSArray *indexPaths = @[indexPath];
[self.tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];
}
}
更新: toDoItems只是一个NSArray,我尝试了以下代码,但仍然没有工作:
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
if(editingStyle == UITableViewCellEditingStyleDelete){
NSArray *indexPaths = @[indexPath];
[self.tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];
[self.toDoItems removeObjectAtIndex:indexPath.row];
}
}
错误信息在这里:
' NSInternalInconsistencyException',原因:'无效更新:第1部分中的行数无效。更新后的现有部分中包含的行数(1003)必须等于数字在更新(1004)之前包含在该部分中的行,加上或减去从该部分插入或删除的行数(0插入,0删除)和加或减移入或移出该部分的行数(0搬进来,0搬出去。'
Xcode 6.2 iOS6
答案 0 :(得分:0)
问题是您从数据模型中删除了错误的对象:
[self.toDoItems removeObjectAtIndex:indexPath.row];
这太简单了。您在此表中有多个部分。您需要一个区分这些部分的数据模型,并且需要从数据模型中的正确部分中删除正确的行,然后才能从表中删除相应的行。你不能单独看indexPath.row
那样做;您需要构建数据模型,以便同时考虑indexPath.section
。