在init之前调用viewDidLoad?

San*_*mar 22 objective-c ios

我面临一个奇怪的情况.在我的控制器中,viewDidLoad之前正在呼叫init.这有什么技术原因吗?

ale*_*x-i 53

viewDidLoad访问方法时,被调用self.view的内部init方法(因为self.view应该没有从过程似乎被固定,因此不会返回零笔尖加载).

  • 所以谢谢.init中的self.view是我的大问题. (7认同)

Ric*_*mpo 15

我知道这是一个有点老的帖子,但我会在任何地方发表我的观点,因为我认为它可以帮助某人.

好吧,我一直处于同样的境地.我认为viewDidLoad是在我的视图控制器类中的init方法之前调用的.但真正发生的事情并非如此:流程在init方法上启动,但在调用[super init*]时跳转到viewDidLoad,因此viewDidLoad方法中的日志消息首先显示在我的自定义初始化中.

我想就是这样.我希望这能节省一些时间.

[对不起我的英语不好]

  • 这对我有帮助。谢谢,里卡德!我的应用程序正在调用我的自定义初始值设定项(称为 super.init),这导致它在离开该自定义初始值设定项之前调用 viewDidLoad。我最终在自定义初始值设定项的末尾调用了 super.init,以便在调用 viewDidLoad 之前我想设置的所有内容都已经设置好了。 (2认同)

Meh*_*hdi 6

我不知道viewController是什么类型的,但是我遇到了类似UITabBarController的情况.我认为它可能有助于另一个面对它与UITabBarController.
据我所知,所有viewControllers在viewDidLoad之前调用init,除了UITabBarController及其子类.
正如Andrew 在这里声称的那样,UITabBarControllers调用loadView inside [super init]方法,这会调用viewDidLoad.因此,在init完成其作业之前将调用viewDidLoad方法.
如果你在viewDidLoad中设置了一些东西,你应该在调用之后在init方法中执行它[super init].


Eik*_*iko 0

不,viewDidLoad消息总是在init之后调用。

你确定 init 被调用了吗?有几种专门针对 UIViewController 的 init 方法,也许会调用另一种方法,而不是让您有不同的想法。

如果您需要更多信息,请粘贴 viewDidLoad 的代码和所有 init 方法,并告诉我们它是如何加载的(即使用代码)或从 nib 加载。