我正在试图理解为什么我重新加载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];
答案 0 :(得分:9)
我认为UITableview
更新存在问题;在section 1
重新加载时,您正在加载section 0
表。我建议您在重新加载之前和之后使用[tableview beginUpdates]
和[tableview endUpdates]
方法,问题应该会消失。
如果没有,请告诉我。希望这会有所帮助。
答案 1 :(得分:1)
试试这个
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:NO];