在Xcode 6中从UITableView手动删除行
问题描述:
我为我的删除按钮编写了以下代码,用于从UITableView中删除选定的行。在Xcode 6中从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的编辑属性保存在故事板中的“编辑期间的多重选择”中。
我收到以下错误,当我按在屏幕上显示的删除按钮。
由于未捕获的异常'NSInternalInconsistencyException',原因:'无效更新:节0中的行数无效。更新(5)后现有节中包含的行数必须等于数在更新之前包含在该部分中的行(5),加上或减去从该部分插入或删除的行数(0插入,2删除),加上或减去移入或移出该部分的行数(0搬进来,0搬出去)。'
不知道在删除按钮代码中我的错误是什么。
答
一个明确的问题是,在从模型中删除相应的数据之前,您正在删除单元格。这是错误的。请务必首先更改型号;然后改变单元格以匹配模型。
@matt ...我把[selectedObjects removeObjectsAtIndexes:indicesToDelete];在BeginUpdates下面,但仍然得到与问题中提到的相同的错误。 – TheGaME
我不知道'selectedObjects'是什么或你的模型是如何维护的。但是,在开始“beginUpdates”之前,您必须从模型中删除行。 – matt
我有2个可变数组:selectedObjects将包含要删除的项目,autoCompleteData包含要在tableview中显示的初始数据。 – TheGaME