从 UITableViewController 中删除表格单元格会导致崩溃?

Posted

技术标签:

【中文标题】从 UITableViewController 中删除表格单元格会导致崩溃?【英文标题】:delete table cell from UITableViewController causes crash? 【发布时间】:2015-03-26 16:17:00 【问题描述】:

我在我的 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

我已经尝试过Deleting table cell causes crash

【问题讨论】:

您是否尝试过将 tableView 删除代码移到 toDoItems 删除代码上方?如果您的 toDoItems 与核心数据相关,则操作将导致在删除之前刷新表。 @Travis M 查看更新 【参考方案1】:

问题是您从数据模型中删除了错误的对象:

[self.toDoItems removeObjectAtIndex:indexPath.row];

这太简单了。此表中有多个部分。您需要一个区分这些部分的数据模型,并且您需要在数据模型中从正确的部分中删除正确的行,然后再从表中删除相应的行。您不能仅通过查看indexPath.row 来做到这一点;你需要构建你的数据模型,以便同时考虑indexPath.section

【讨论】:

这是一个工作示例,演示了从具有多个部分的表中删除一行:github.com/mattneub/Programming-iOS-Book-Examples/blob/master/… 请注意,数据模型是一个数组数据对象的数组。因此,要从模型中删除正确的对象,我调用[self.sectionData[ip.section] removeObjectAtIndex:ip.row] - 请注意,这涉及both 部分和行。

以上是关于从 UITableViewController 中删除表格单元格会导致崩溃?的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个 ViewController 中选择 UITableViewController 行?

从 UITableViewController 继承的控制器中的自定义 uitableViewCell

如何从 UITableViewController 中的静态单元格获取 textFields?迅速

尝试从 UITableViewController 文本框将数据保存在核心数据中

从 URL 字符串中提取的 UITableViewController 中的图像加载缓慢

从 UIViewController 转到 UITableViewController