嗨,以下功能对我不起作用,我不明白为什么......
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
// Delete the row from the data source
NSString *selectedCategory = [self.daten objectAtIndex:indexPath.row];
[self.daten removeObjectAtIndex:indexPath.row]; //we assume, that mySourceArray is a NSMutableArray we use as our data source
[self.tableView beginUpdates];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[self.tableView endUpdates];
// ...
}
}
我没有任何章节......我总是得到那个例外:
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无效更新:第0节中的行数无效。更新后的现有部分中包含的行数(19)必须等于行数在更新(19)之前包含在该部分中,加上或减去从该部分插入或删除的行数(插入0,删除1)并加上或减去移入或移出该部分的行数(0移入,0搬出去。) * 第一次抛出调用堆栈: (0x342692a3 0x33a3b97f 0x3426915d 0x3922e2af 0x36dd5b83 0x5453d 0x36f6b5d9 0x36e8c0ad 0x36e8c05f 0x36e8c03d 0x36e8b8f3 0x36e8c0ad 0x36e8c05f 0x36e8c03d 0x36e8b8f3 0x36e8bde9 0x36db45f9 0x36da1809 0x36da1123 0x34f195a3 0x34f191d3 0x3423e173 0x3423e117 0x3423cf99 0x341afebd 0x341afd49 0x34f182eb 0x36df5301 0x24343 0x38e34b20) libc ++ abi.dylib:terminate调用抛出异常
答案 0 :(得分:2)
您需要使用numberOfRowsInSection:
方法更新行数。我可以看到,您需要在此方法中返回[self.daten count]
。
据说,系统会在更新/删除之前/之后检查此数字,以保持数据的完整性。
你总是有一个部分:)
像这样实施:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.daten count];
}
此外,请记住,您需要将UITableViewDelegate
和UITableViewDataSource
都设置为self
。
好的,问题是:NSMutableArray
removeObjectAtIndex:
方法不调整大小。所以你必须自己处理它。创建具有正确容量的新阵列,并将其余元素移动到该阵列。您可以谷歌how to resize NSMutableArray
。