0

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 の Editing プロパティを「編集中の複数選択」に維持しました。

ここに画像の説明を入力

画面に表示されている削除ボタンを押すと、次のエラーが表示されます。

キャッチされない例外 'NSInternalInconsistencyException' が原因でアプリを終了しています。理由: '無効な更新: セクション 0 の行数が無効です。更新後の既存のセクションに含まれる行数 (5) は、それに含まれる行数と等しくなければなりません更新前のセクション (5)、そのセクションから挿入または削除された行数 (0 挿入、2 削除) をプラスまたはマイナスし、そのセクションに移動した行数またはそのセクションから移動した行数 (0 移動、0 移動)アウト)。'

削除ボタンのコードで何が間違っているのかわかりません。

4

1 に答える 1

1

1 つの明確な問題は、対応するデータをモデルから削除する前にセルを削除していることです。それは間違っている。常にモデルを最初に変更してください。次に、モデルに一致するようにセルを変更します。

于 2015-11-04T03:45:04.297 に答える