UITableView重新加载部分顺序问题?

时间:2013-06-04 14:17:48

标签: ios objective-c cocoa-touch uitableview

我正在试图理解为什么我重新加载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];

2 个答案:

答案 0 :(得分:9)

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

如果没有,请告诉我。希望这会有所帮助。

答案 1 :(得分:1)

试试这个

[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:NO];
相关问题