【问题标题】:viewDidLoad not called for UITableView loaded from XIB file从 XIB 文件加载的 UITableView 未调用 viewDidLoad
【发布时间】:2011-03-08 13:22:25
【问题描述】:

我有一个 XIB 文件,其中有一些 UI 元素。结果视图由我自己的从 UIViewController 派生的类控制。当从主应用程序委托加载 XIB 文件等时,这个工作正常,并且调用 viewDidLoad。

但是,在那个 XIB 文件中,我也(显然)有一些子视图。其中之一是 UITableView。那个是由我从 UITableViewController 派生的自定义类控制的。我在一侧设置了委托、数据源插座,UITableViewController 也设置了正确的视图属性。但是,加载周围视图时不会调用 UITableViewController 的 viewDidLoad。

我认为这是因为主 UIView / UIViewController 对并不真正了解子视图。在 UIViewController viewDidLoad 中我可以调用子视图的 viewDidLoad。但是我怀疑这不是预期的用途。那我应该怎么做呢?

我的假设是,从 xib 文件加载的子视图都会收到 viewDidLoad 消息。

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    你是正确的,你不应该调用子视图的 viewDidLoad: 方法,因为它应该总是在加载视图时被调用(不管视图是如何创建的)。来自文档:

    无论视图是存储在 nib 文件中还是在 loadView 方法中以编程方式创建,都会调用此方法。

    这向我表明,您的 .xib 文件中没有正确设置某些内容(连接?),或者控制器没有正确链接到他们的视图。当您说 UITableViewController 具有正确的视图集时,您是在使用“view”属性而不是 UITableViewController 的“tableView”属性...?

    【讨论】:

    • 嗯,在 IB 中我只能看到我的派生类的 view 属性。但你是对的!我可能应该改用 tableView 。我会检查那个去哪里...
    • 嗯,奇怪。对于从 UITableViewController 派生的类,我在 IB 中获得的唯一渠道是 SearchController 和视图...
    • 也许这会有所帮助。 stackoverflow.com/questions/2265029/…
    • 谢谢!看起来确实很有帮助
    猜你喜欢
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 2014-10-17
    • 2023-03-16
    相关资源
    最近更新 更多