这似乎是在我使用 nib 文件加载 View 时发生的。我需要以编程方式为某些自定义 View 设置数据源和委托(delegate)。只有当我在 viewDidLoad 方法中设置它们时它们才起作用。在 initializer 、 awakeFromNib 等中设置它们都失败了。有谁知道这是什么原因?
最佳答案
当您从 nib 文件创建 View Controller 时,UIViewController 首先被初始化,然后被加载。因此,当调用 initWithNibName:bundle:
方法时,self.view
并且从 nib 加载的任何其他 View 都将为 nil
。也可能发生 View 被卸载的情况(参见 viewDidUnload
)。这就是为什么任何与 View 相关的初始化都需要在 viewDidLoad
中进行的原因。
关于objective-c - 为什么某些 UIViewController 属性在未使用 viewDidLoad 设置时变为 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12594620/