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];
    }

其中两个数组之一是我的数据源依赖于所选的段。我收到以下错误,不知道如何处理。

更新后现有节中包含的行数 (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 吗?根据错误消息,您实际上并没有从数据源中删除 tableview 期望您从中删除的对象。我猜也许你正在从错误的数组中删除。

还有一件事要尝试:首先删除对象,然后执行 deleteRowsAtIndexPath。

于 2012-12-07T08:49:25.160 回答
0

您应该对部分使用方法

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