在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的编辑属性保存在故事板中的“编辑期间的多重选择”中。

enter image description here

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

由于未捕获的异常'NSInternalInconsistencyException',原因:'无效更新:节0中的行数无效。更新(5)后现有节中包含的行数必须等于数在更新之前包含在该部分中的行(5),加上或减去从该部分插入或删除的行数(0插入,2删除),加上或减去移入或移出该部分的行数(0搬进来,0搬出去)。'

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

一个明确的问题是,在从模型中删除相应的数据之前,您正在删除单元格。这是错误的。请务必首先更改型号;然后改变单元格以匹配模型。

+0

@matt ...我把[selectedObjects removeObjectsAtIndexes:indicesToDelete];在BeginUpdates下面,但仍然得到与问题中提到的相同的错误。 – TheGaME

+0

我不知道'selectedObjects'是什么或你的模型是如何维护的。但是,在开始“beginUpdates”之前,您必须从模型中删除行。 – matt

+0

我有2个可变数组:selectedObjects将包含要删除的项目,autoCompleteData包含要在tableview中显示的初始数据。 – TheGaME