【问题标题】:UITableView reloadData not updating UI, only after restartUITableView reloadData 不更新 UI,仅在重启后
【发布时间】:2012-11-06 18:11:38
【问题描述】:

遇到一个奇怪的问题:

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

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

但是,当我重新启动应用程序时,我第二次选择的项目会显示(最近)!

我最近尝试调用 tableView reloadData(几乎在任何我可以调用的地方)。我试图调用 [tableView beginUpdates]。

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

有什么建议吗?

【问题讨论】:

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

标签: xcode uitabbarcontroller uitableview nsfilemanager reloaddata


【解决方案1】:

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

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

【讨论】:

  • 我在另一个实例中遇到了同样的问题,并在调用 CellForRowAtIndexPath 之前再次将内容放入数组中解决了这个问题。将其标记为答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-21
  • 2011-11-19
  • 1970-01-01
相关资源
最近更新 更多