0

遇到一个奇怪的问题:

我有一个 TableViewController(称为最近选项卡),它是 UITabBarController 的选项卡之一。我在第一个选项卡栏(浏览选项卡)中将项目保存到沙箱(文档文件夹)中。然后我在第二个标签栏(最近)中将它们拉出并在 cellForRowAtIndexPath 中设置它们。

这是奇怪的行为:当我在第一个视图控制器(浏览)中向沙箱添加项目时,一切正常。我打开 TableViewController 的第二个选项卡(最近的),我看到项目出现在那里。然后我尝试回到第一个控制器(浏览)以添加更多项目,但它们没有出现(当我回到最近时)。

但是,当我重新启动应用程序时,我第二次选择的项目确实出现了(最近)!

我最近尝试过调用 tableView reloadData(实际上我可以在任何地方调用)。我试图调用 [tableView beginUpdates]。

没有变化,表视图(最近)只有在重新启动应用程序后才能正确更新。

有什么建议么?

4

1 回答 1

0

我相信问题是 CellForRowAtIndexPath 没有一个带有索引的数组来拉出项目,因此导致 tableView 在计算有多少行时出现问题(在另一个 SO 线程中阅读)。

该数组必须在调用 CellForRowAtIndexPath 之前已经存在,而不是在其中实例化(可以通过公共 api 传递给类或在 viewDidLoad 中实例化,例如)。否则,它将在每次调用 CellForRowAtIndexPath 时被实例化,并且不会有可用于创建单元格的静态索引。

于 2012-11-19T16:04:20.593 回答