我在一个屏幕上有一个UITableView,其中底层数据源的结构可能会发生变化 - 而不仅仅是单个单元格。
如果我在同一个UITableView上执行该操作,然后调用reload,我会得到一个错误,即表的结构已经改变(如不同的行数,部分等)
这是我得到的错误:
* 由于未捕获的异常而终止应用 'NSInternalInconsistencyException',原因:'无效更新:无效 部分数量。表中包含的部分数量 更新后的视图(1)必须等于部分的数量 更新前的表视图中包含(21),加上或减去 插入或删除的部分数量(插入0,删除0)。'
我是否真的必须通过删除所有部分然后添加新部分来更改我的表格?
所以基本上我的问题是如何正确地做到这一点。 我可以以编程方式创建一个新的UITableView,使用初始表中的rect,bkgnd颜色,委托和数据源 - 但是我在IB中设置的所有约束都会丢失给新表。
如何从旧表中获取所有这些约束并将它们提供给新表?
即使我只是设置了一个新的数据源,我也会遇到上述错误。只有我 使用新的数据源创建一个新的UITableView我没有得到上述内容 错误。
或者是否存在另一种方法来重置具有完全不同的底层数据的UITableView,同时保持其所有UI属性和约束不受影响?
答案 0 :(得分:2)
您需要做的就是将新数据分配给各种数据源方法引用的任何变量,并在表视图上调用reloadData
。
换句话说,在您拨打reloadData
时,对numberOfSections
,numberOfRowsInSection
和cellForRowAtIndexPath
等的调用必须全部引用相同的更新数据。