0

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

如果我在同一个 UITableView 上执行此操作,然后调用 reload,我会收到表结构已更改的错误(例如不同的行数、节数等)

这是我得到的错误:

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

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

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

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

即使我只是设置了一个新的数据源,我也会收到上述错误。只有当我使用新的数据源创建新的 UITableView 时,我才不会收到上述错误。

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

4

1 回答 1

2

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

换句话说,在您调用 时reloadData,对 、 等的调用numberOfSections必须numberOfRowsInSection都引用相同的更新数据cellForRowAtIndexPath

于 2013-07-14T22:40:26.623 回答