重新加载段索引时出现奇怪的错误?

时间:2010-01-08 08:09:16

标签: objective-c uitableview iphone-sdk-3.0 sectionheader

我正在使用iPhone SDKObjective-C和 我收到此错误消息:

  

断言失败 - [UITableView _endCellAnimationsWithContext:],/ SourceCache / UIKit / UIKit-984.38 / UITableView.m:774   2010-01-08 13:24:16.842 MyAPP [628:20b]由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无效更新:第1节中的行数无效。现有部分中包含的行数更新(1)必须等于更新(0)之前该部分中包含的行数,加上或减去从该部分插入或删除的行数(插入0,删除0)。

以下是扩展部分的代码:

- (void)checkAction:(id)sender
{
    //The button is added as subview on a view and the view is section header custom view
    UIButton *Button = (UIButton*)sender;
    NSLog(@"Button Tag=%d",Button.tag);
    if([[self.MySectionIndexArray objectAtIndex:Button.tag] isEqualToString:@"UP"])
    {
        [self.MySectionIndexArray replaceObjectAtIndex:Button.tag withObject:@"DOWN"];
        [ButtonDrop setBackgroundImage:[UIImage imageNamed:@"Up.png"] forState:UIControlStateNormal];
        [TableDashBoard reloadSections:[NSIndexSet indexSetWithIndex:Button.tag] withRowAnimation:UITableViewRowAnimationFade];
    }
    else
    {
        [self.MySectionIndexArray replaceObjectAtIndex:Button.tag withObject:@"UP"];
        [ButtonDrop setBackgroundImage:[UIImage imageNamed:@"Down.png"] forState:UIControlStateNormal];
    }
    NSLog(@"self.MySectionIndexArray ka title = %@ at index Number=%d",self.MySectionIndexArray,Button.tag);
}

2 个答案:

答案 0 :(得分:6)

问题是因为您在更改表格的reloadSections内容时使用dataSource,因此它会通过tableView:numberOfRowsInSection:报告不同的行数。

检查您从UITableViewDataSource tableView:numberOfRowsInSection:返回的内容。我的赌注是,在开头你为第1部分返回0,但是当你打电话给reloadSections时,你会为第1部分返回1。

如果确实如此,您可以使用UITableView方法beginUpdatesinsertRowsAtIndexPaths:withRowAnimation:endUpdates

答案 1 :(得分:2)

我有类似的问题。我确信正在更新dataSource。

但最后我意识到我实际上修改了2个部分,但只更新了一个数据源。