我正在使用iPhone SDK和Objective-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);
}
答案 0 :(得分:6)
问题是因为您在更改表格的reloadSections
内容时使用dataSource
,因此它会通过tableView:numberOfRowsInSection:
报告不同的行数。
检查您从UITableViewDataSource
tableView:numberOfRowsInSection:
返回的内容。我的赌注是,在开头你为第1部分返回0,但是当你打电话给reloadSections
时,你会为第1部分返回1。
如果确实如此,您可以使用UITableView
方法beginUpdates
,insertRowsAtIndexPaths:withRowAnimation:
和endUpdates
。
答案 1 :(得分:2)
我有类似的问题。我确信正在更新dataSource。
但最后我意识到我实际上修改了2个部分,但只更新了一个数据源。