2

UITableViewからいくつかの行を削除しようとしていますが、これが私のコードです...

    [self.responsesTableView beginUpdates];
    [self.responsesTableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:self.processingIndexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
    [self. responsesTableView endUpdates];
    noOfRsponses --;
    if (self.segFrndEveryone.selectedSegmentIndex == 0) {
        [self.arrFriendComments removeObjectAtIndex:self.processingIndexPath.row];
    }else {
        [self.arrAllComments removeObjectAtIndex:self.processingIndexPath.row];
    }

ここで、2つの配列の1つは、選択したセグメントに依存するデータソースです。次のエラーが発生しましたが、これに対処する方法がわかりません。

更新後の既存のセクションに含まれる行数(9)は、更新前のそのセクションに含まれる行数(9)に、そのセクションから挿入または削除された行数(0を挿入)を加えたものと等しくなければなりません。 、1が削除されました)、そのセクションに出入りした行数のプラスまたはマイナス(0が入ってきた、0が出た)。

4

3 に答える 3

3

を手動で変更する前に、データソースを更新する必要がありますUITableView

// update the data source for the table change
noOfRsponses--;
NSMutableArray *targetArray = (self.segFrndEveryone.selectedSegmentIndex == 0) ? self.arrFriendComments : self.arrAllComments;
[targetArray removeObjectAtIndex:self.processingIndexPath.row];

// update the table view itself
[[self responsesTableView] beginUpdates];
[[self responsesTableView] deleteRowsAtIndexPaths:[NSArray arrayWithObject:self.processingIndexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
[[self responsesTableView] endUpdates];
于 2012-12-07T08:49:40.510 に答える
1

正しい配列でremoveObjectAtIndexを呼び出していますか?エラーメッセージに基づいて、テーブルビューが削除することを期待しているオブジェクトをデータソースから実際に削除していません。間違った配列から削除しているのではないかと思います。

そして、もう1つ試してみてください。最初にオブジェクトを削除してから、deleteRowsAtIndexPathを実行してください。

于 2012-12-07T08:49:25.160 に答える
0

セクションにはメソッドを使用する必要があります

- (void)deleteSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation;
于 2014-10-25T15:26:21.987 に答える