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 に最後のオブジェクトが 1 つしかない場合、エラーが発生します。

* -[UITableView _endCellAnimationsWithContext:]、/SourceCache/UIKit/UIKit-2380.17/UITableView.m:1070 2013-05-21 11:41:47.306 EzMall[3398:907] でのアサーションの失敗'、理由: '無効な更新: セクション 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 に答える