【问题标题】:Deleting rows manually from UITableView in Xcode 6从 Xcode 6 中的 UITableView 手动删除行
【发布时间】:2016-02-04 10:28:27
【问题描述】:

我为删除按钮编写了以下代码,用于从 UITableView 中删除选定的行。

-(IBAction)deleteItems:(id)sender {

 NSArray *selectedCells = [self.autoCompleteView indexPathsForSelectedRows];
NSMutableIndexSet *indicesToDelete = [[NSMutableIndexSet alloc] init];
for (NSIndexPath *indexPath in selectedCells) {
    [indicesToDelete addIndex:indexPath.row];
}
//arrayFromPlist is NSMutableArray
[autoCompleteView beginUpdates];
[autoCompleteView deleteRowsAtIndexPaths:selectedCells withRowAnimation:UITableViewRowAnimationAutomatic];
[autoCompleteView endUpdates];
[selectedObjects removeObjectsAtIndexes:indicesToDelete];
[autoCompleteView reloadData];

[alertMsg deleteConfirmation:@"Do you want to delete these items?"];

}

请检查我的 UITableView 和删除按钮的图像。我在情节提要中将 UITableview 的 Editing 属性保留为“编辑期间的多项选择”。

当我按下屏幕上显示的删除按钮时,我收到以下错误。

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无效更新:第 0 节中的行数无效。更新后现有节中包含的行数 (5) 必须等于更新前该节中包含的行数 (5),加上或减去从该节插入或删除的行数(0 插入,2 删除),加上或减去移入或移出该节的行数( 0 个搬入,0 个搬出)。'

不知道我在删除按钮代码中的错误是什么。

【问题讨论】:

    标签: objective-c iphone uitableview xcode6 ios8.4


    【解决方案1】:

    一个明确的问题是您在从模型中删除相应数据之前删除了单元格。那是错误的。始终首先更改模型;然后以与模型匹配的方式更改单元格。

    【讨论】:

    • @matt...我把 [selectedObjects removeObjectsAtIndexes:indicesToDelete];在 BeginUpdates 下面,但仍然得到与问题中提到的相同的错误。
    • 我不知道selectedObjects 是什么,也不知道你的模型是如何维护的。但是您必须在开始 beginUpdates 之前从模型中删除行。
    • 我有 2 个可变数组: selectedObjects 将包含要删除的项目, autoCompleteData 包含要在 tableview 中显示的初始数据。
    • @matt..知道了。我犯的小错误。我将 selectedObjects 更改为 autocompleteData。它奏效了。
    • 那么你需要修改的是autoCompleteData。如果是你cellForRowAtIndexPath中数据的来源你必须现在修改,而且必须先修改。这是有效的示例代码:github.com/mattneub/Programming-iOS-Book-Examples/blob/master/… 看看我是如何在删除表格视图的任何行之前完全修改模型的。
    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 2014-11-03
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多