4

我试图理解为什么我重新加载我的部分的顺序似乎很重要UITableView

如果我像这样重新加载:

// Reload section 1
[self.groupDetailsTableView reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationFade];

// Reload section 0
[self.groupDetailsTableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];

没有问题,但是如果我以相反的顺序重新加载(首先是第 0 节,然后是第 1 节),我会收到错误消息:

*由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无效更新:第 1 节中的行数无效。更新 (2) 后现有节中包含的行数必须等于其中包含的行数更新前的那个节 (1),加上或减去从该节插入或删除的行数(0 插入,0 删除),加上或减去移入或移出该节的行数(0 移入,0搬出)。'

但是,如果我这样做,则没有错误:

[self.groupDetailsTableView reloadSections:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 2)] withRowAnimation:UITableViewRowAnimationFade];
4

2 回答 2

9

我觉得更新有问题UITableview;您在重新加载section 1时正在加载表格section 0。我建议您在重新加载之前和之后立即使用[tableview beginUpdates]and方法,问题应该会消失。[tableview endUpdates]

如果没有,那就告诉我。希望这可以帮助。

于 2013-06-04T14:25:32.617 回答
1

试试这个

[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:NO];
于 2016-02-25T08:29:03.677 回答