繁体   English   中英

UIViewController初始化代码:initWithNibName和viewDidLoad之间的区别

[英]UIViewController init code: difference between initWithNibName and viewDidLoad

我想我们可以在以下两个地方编写init代码

  • initwithNibName
  • viewDidLoad

有什么区别。

我认为initWithNibName发生在viewdidLoad之前,我们必须在initWithNibName做一些初始化的东西是什么情况?

首先调用initWithNibName 这是UIViewController指定初始化器; 换句话说,无论您调用什么其他方法来初始化UIViewController ,最终都会在某个地方调用initWithNibName 例如,如果只调用[[UIViewController alloc] init] ,则默认行为是尝试加载与视图控制器类同名的nib文件。

稍后在视图加载后调用viewDidLoad 引用API文档

在视图控制器将其视图层次结构加载到内存后调用此方法。 无论视图层次结构是从nib文件加载还是在loadView方法中以编程方式创建,都会调用此方法。 您通常会覆盖此方法以对从nib文件加载的视图执行其他初始化。

仔细阅读UIViewController 文档以获得更清晰的理解。

怎么回事?

进入initWithNibName的代码类型与任何init方法相同:通常设置任何必要的属性。

至于viewDidLoad ,在这里你可能会把视图层次结构加载到内存中时需要运行的代码。 例如,如果您想以编程方式对控制器负责的UIView执行某些操作,则可以在此处执行此操作,因为在调用init时UIView未加载到内存中。

一个常见的错误是人们尝试在initWithNibName方法中向self.view (或子视图)发送消息,并想知道为什么它没有效果。 它没有效果,因为self.view在那时是零!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM