【问题标题】:Why do some UIViewController properties become nil when not set using viewDidLoad?为什么某些 UIViewController 属性在未使用 viewDidLoad 设置时变为 nil?
【发布时间】:2012-09-26 04:36:37
【问题描述】:

这似乎发生在我使用 nib 文件加载视图时。我需要以编程方式为一些自定义视图设置数据源和委托。只有当我在 viewDidLoad 方法中设置它们时它们才起作用。在初始化程序中设置它们, awakeFromNib 等都失败了。有谁知道这是什么原因?

【问题讨论】:

    标签: objective-c cocoa uikit


    【解决方案1】:

    当你从一个 nib 文件创建一个视图控制器时,UIViewController 首先被初始化然后被加载。所以当initWithNibName:bundle: 方法被调用self.view 并且从笔尖加载的任何其他视图将是nil。也可能会卸载视图(请参阅viewDidUnload)。这就是为什么任何与视图相关的初始化都需要在 viewDidLoad 中进行。

    【讨论】:

    • 这条规则有例外吗?
    • 我已阅读文档,但对 nib 文件加载有一个清晰简洁的解释:是否:发送所有对象分配消息,发送所有对象 initWithCoder 或 Init .. 最终调用 viewDidLoad
    • 这方面有大量的文档。有时候,感觉好像太多了。阅读资源编程指南的 NIB 文件部分:developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/…
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 2013-12-27
    • 2016-04-01
    相关资源
    最近更新 更多