2012-12-07 29 views
2

我试图删除的UITableView一些行,这里是我的代码...如何在从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]; 
    } 

其中两个阵列中的一个是我的数据源depnding所选择的部分。 我收到以下错误,不知道如何处理此问题。

包含在现有部分中的更新后的行数 (9)必须更新(9)之前等于包含在该部分 的行数,加或减插入的行数或 从该部分删除(0插入,1删除)和加号或减号 移入或移出该部分的行数(移入0,移出0 )。

回答

1

你是否调用正确数组的removeObjectAtIndex?根据错误消息,您实际上没有从tableview期望您已从中删除的数据源中删除一个对象。我猜你可能是从错误的数组中删除。

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

+0

方法我试过你的建议,但现在消息已经改变了这个...无效更新:部分无效号码。更新后的表视图中包含的节数(8)必须等于更新前表格视图中包含的节数(9),加上或减去插入或删除的节数(0插入,0删除)。” –

+0

修正了它......愚蠢的错误。 (也在返回没有部分的答复...:X) –

+0

很高兴你明白了。 – mahboudz

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]; 
+0

我尝试了您的建议,但现在消息已更改为此...无效的更新:无效的部分数量。更新后的表视图中包含的节数(8)必须等于更新前表格视图中包含的节数(9),加上或减去插入或删除的节数(0插入,0删除)。” –

+0

错误消息报告,在*行*更新之后,您有*节数*无效,导致我怀疑这里是否存在第二个问题。无论如何,您正在删除该部分中唯一的一行吗? – FluffulousChimp

0

您应该使用部分

- (void)deleteSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation; 
相关问题