0

我有一个可编辑的 tableView,我无法删除最后一个对象,这是我的方法:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView beginUpdates];
    if (editingStyle == UITableViewCellEditingStyleDelete)
    {
        [self deletePermittedFriend:[friendsIDs objectAtIndex:indexPath.row]];
        [tableDataList removeObjectAtIndex:indexPath.row];
    }

    [tableView endUpdates];
}

如果 tableDataList MutableArray 只有一个最后一个对象会给我一个错误:

* -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit/UIKit-2380.17/UITableView.m:1070 2013-05-21 11:41:47.306 EzMall[3398:907] 中的断言失败 *由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序',原因:'无效更新:第0节中的行数无效。更新后现有节中包含的行数(0)必须等于更新前该节中包含的行数(1),加上或减去从该部分插入或删除的行数(0 插入,0 删除),加上或减去移入或移出该部分的行数(0 移入,0 移出)。

4

2 回答 2

3

看起来你忘记调用这个 UITableView 方法了:

– deleteRowsAtIndexPaths:withRowAnimation:

顺便说一句:阅读错误消息始终是一种好习惯。

于 2013-05-21T14:47:32.183 回答
0

尝试这个

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
    {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        [tableDataList removeObjectAtIndex:indexPath.row];

        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }


    [self.tableView beginUpdates];
    [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationAutomatic];
    [self.tableView endUpdates];
    }
于 2013-05-21T14:52:21.293 回答