我有一个包含多个部分的 TableView,它有一个链接到数组数组的委托数据源。数组数组中的每个数组都是它自己的表视图部分。我让它正确加载并启用了一个编辑按钮,但是当我尝试删除我的应用程序时崩溃并出现以下错误。
*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无效更新:节数无效。更新后表视图中包含的节数(9)必须等于更新前表视图中包含的节数(10),加上或减去插入或删除的节数(0插入,0已删除)。
现在我没有删除一个部分,所以有点困惑,这是我的代码示例。我已经广泛搜索了这个论坛,但就是找不到我做错了什么。
这是我的代码:
// Calculate how many sections in the table view from the array or arrays
- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView{
AppDelegate *delegate = [[UIApplication sharedApplication]delegate];
NSInteger sections = [delegate.packing.packingListArray count];
return sections;
}
// Load the array and extract the count of items for each section
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
// For each array within the array of array count the items
AppDelegate *delegate = [[UIApplication sharedApplication]delegate];
NSArray *sectionContents = [delegate.packing.packingListArray objectAtIndex:section];
NSInteger rows = [sectionContents count];
return rows;
}
// Load the list into the table view
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// Set the cell identifier - using ID field thats been set in interface builder
static NSString *CellIdentifier = @"DestinationCell";
// Re-use existing cell?
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// If no reusabled cells then create a new one
if (cell == nil){
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// Add the relevant packing list array from the array of arrays
AppDelegate *delegate = [[UIApplication sharedApplication]delegate];
NSArray *sectionContents = [delegate.packing.packingListArray objectAtIndex:[indexPath section]];
NSString *contentForThisRow = [sectionContents objectAtIndex:[indexPath row]];
cell.textLabel.text = contentForThisRow;
// Return the formatted cell with the text it needs to display in the row
return cell;
}
// Delete row from table and update data source array
- (void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle) editingStyle forRowAtIndexPath:(NSIndexPath *) indexPath {
if (editingStyle ==UITableViewCellEditingStyleDelete) {
[tableView beginUpdates];
// Delete the item from the array
AppDelegate *delegate = [[UIApplication sharedApplication]delegate];
[delegate.packing.packingListArray removeObjectAtIndex:indexPath.row];
// Delete the row from the table view
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[tableView endUpdates];
}
}
我有一种感觉,这可能与创建多个部分的数组数组的复杂性有关,但一定有办法做到这一点?
任何帮助都非常感谢,因为我现在已经查看了相同的代码几个小时了。