如何正确重置UITableView的基础数据?

时间:2013-07-14 22:37:40

标签: ios uitableview

我在一个屏幕上有一个UITableView,其中底层数据源的结构可能会发生变化 - 而不仅仅是单个单元格。

如果我在同一个UITableView上执行该操作,然后调用reload,我会得到一个错误,即表的结构已经改变(如不同的行数,部分等)

这是我得到的错误:

  

* 由于未捕获的异常而终止应用   'NSInternalInconsistencyException',原因:'无效更新:无效   部分数量。表中包含的部分数量   更新后的视图(1)必须等于部分的数量   更新前的表视图中包含(21),加上或减去   插入或删除的部分数量(插入0,删除0)。'

我是否真的必须通过删除所有部分然后添加新部分来更改我的表格?

所以基本上我的问题是如何正确地做到这一点。 我可以以编程方式创建一个新的UITableView,使用初始表中的rect,bkgnd颜色,委托和数据源 - 但是我在IB中设置的所有约束都会丢失给新表。

如何从旧表中获取所有这些约束并将它们提供给新表?

  

即使我只是设置了一个新的数据源,我也会遇到上述错误。只有我   使用新的数据源创建一个新的UITableView我没有得到上述内容   错误。

或者是否存在另一种方法来重置具有完全不同的底层数据的UITableView,同时保持其所有UI属性和约束不受影响?

1 个答案:

答案 0 :(得分:2)

您需要做的就是将新数据分配给各种数据源方法引用的任何变量,并在表视图上调用reloadData

换句话说,在您拨打reloadData时,对numberOfSectionsnumberOfRowsInSectioncellForRowAtIndexPath 的调用必须全部引用相同的更新数据。