【问题标题】:How to refresh UITableView data?如何刷新 UITableView 数据?
【发布时间】:2010-07-25 02:41:13
【问题描述】:

我有一个 UITableView 有两个部分,当我的应用程序启动时它们都是空的。我的应用程序从 URL 获取数据,然后将数据放入数组(每个部分一个)中,该数组应该用于为每个单元格提供 UITableView 数据。

调用[tableView reloadData] 似乎不会刷新任何数据,或调用任何委托方法。 (比如请求节数和行数等虽然不知道是不是真的应该这样)
如果有帮助,我正在使用自定义 UITableViewCells。

我还尝试刷新这些部分,并循环访问数据以将每个单独的单元格添加到这些部分中。似乎没有任何效果。
我一遍又一遍地检查,一切似乎都是正确的,并且 UITableView 在 Interface Builder 中连接正确。
我的应用程序(在其他选项卡中)还有另外两个表格视图,它们工作得非常好,尽管它们都只有一个部分。

【问题讨论】:

  • 应该是这样。作为一个起点——表视图首次加载时是否调用了预期的委托方法?
  • 是的,他们是。不过,这是唯一一次调用委托方法。

标签: iphone objective-c uitableview nsarray delegates


【解决方案1】:

如果你在该行下一个断点,然后将鼠标悬停在“tableView”上,它会说内存地址是0x0吗?

【讨论】:

  • 是的,确实如此。我猜这是一件坏事……知道为什么会这样吗?
  • 是的...这意味着您引用的“tableView”不是您尝试连接到 IB 的 tableView。试试这个;将您的插座的名称从 tableView 更改为 myTableView (或其他名称),但不要将其命名为类似于您的视图控制器上可能已经存在的名称。将所有内容重新连接到您新命名的插座(并确保您也更改任何底层 ivar 名称)......我敢打赌它会开始工作。
  • 不幸的是它没有工作,它仍然返回 null。我签入了其中一种表视图委托方法 numberOfSectionsInTableView,并在其中调用了正确的表视图。然后不知何故,当我稍后引用该表视图时,它是空的。
  • 我假设代码是私有的,你不能在任何地方发布项目?
  • 好吧,我宁愿不...我现在猜测它不起作用的原因是因为我试图从另一个视图控制器调用它,尽管这并不是真的有意义,因为我可以使用相同的方法访问其他所有内容。
【解决方案2】:

检查几件事:

  1. 确保 tableView 连接到 IB 中的 File's Owner
  2. 确保 tableView.delegate = self
  3. 确保您的数据源确实有数据

【讨论】:

  • 1.已经是 2。已经是 3。确实如此,但没有为要创建的单元格调用方法
猜你喜欢
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-08
  • 1970-01-01
  • 1970-01-01
  • 2012-01-19
相关资源
最近更新 更多