【问题标题】:How to get reloadData to work on UITableView如何让 reloadData 在 UITableView 上工作
【发布时间】:2011-02-08 19:34:16
【问题描述】:

我有一个从 NIB 文件加载的 UITableView。屏幕控制器是符合 UITableView 委托协议的 UIViewController 的子类。这是由 UINavigationController 管理的视图堆栈中的第二个屏幕。

在我的 viewWillAppear 中,我运行了两个 NSFetchRequest,并使用这些 NSFetchRequest 的结果更新了表中 3 个部分中的 2 个。在 viewWillAppear 的底部我调用了

[self.myTable reloadData];

myTable 是屏幕的 UITableView 的 IBOutlet。

无论出于何种原因,该表都不会重新加载数据,并且当我从导航控制器层次结构中更深的视图返回到该表时,不会调用该表的任何委托方法。

如何让表格重新加载?

谢谢。

【问题讨论】:

  • 你检查过 myTable 不是 nil 吗?您是否还检查过表的数据源和委托不是零?不要忘记 Cocoa 的“messages to nil”规则!
  • 当你向 nil 发送消息时会发生什么?

标签: ios uitableview


【解决方案1】:

代替self.tableView,使用:

[myTable reloadData];

因此,如果您将 IBOUlet 定义为 myTable,那么您需要改用该名称。

如果您像在标题中那样初始化 myTable,self.myTable 会起作用:

self.myTable = [[UITableView alloc] initWithFrame:CGRectZero];

【讨论】:

  • 这行得通。 [self.myTable reloadData] 和 [myTable reloadData] 不是一回事吗。是因为 self.myTable 调用了 setter 和 getter 吗?
【解决方案2】:

您是否还将 UITableView 链接到 nib 文件中的数据源和委托出口?除了 IBOutlet 之外,您还必须链接这两个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多