从UItableview中删除行时崩溃

时间:2012-02-21 12:30:53

标签: iphone objective-c ios uitableview

使用commitEditingStyle从 Uitableview 删除行时,我的应用程序崩溃时出现此错误。

  

断言失败 - [UITableView _endCellAnimationsWithContext:],   /SourceCache/UIKit_Sim/UIKit-1912.3/UITableView.m:1046。终止   应用程序由于未捕获异常NSInternalInconsistencyException',   原因:'无效更新:第0节中的行数无效   更新后现有部分中包含的行数(2)   必须等于之前该部分中包含的行数   更新(1),加上或减去插入或删除的行数   从该部分(0插入,1删除)和加号或减号   移入或移出该部分的行(0移入,0移出)。

这是我的代码:

- (void)tableView:(UITableView *)tv commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    // If row is deleted, remove it from the list.
    if (editingStyle == UITableViewCellEditingStyleDelete) {
      order *OrderObj= [appDelegate.orderArray objectAtIndex:[indexPath row]];
       [appDelegate removeitem:OrderObj];

        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }   }

2 个答案:

答案 0 :(得分:6)

您的tableView:numberOfRowsInSection:在更新后返回错误值。检查删除前和删除后返回的值。它必须减少1。

答案 1 :(得分:6)

尝试更改这些行:

order *OrderObj= [appDelegate.orderArray objectAtIndex:[indexPath row]];
[appDelegate removeitem:OrderObj];

为:

[appDelegate.orderArray removeObjectAtIndex:[indexPath row]]; // assuming orderArray is NSMutableArray