【发布时间】:2015-09-25 19:11:56
【问题描述】:
我遇到了一个有趣的问题。我有一个视图控制器:
LoginViewController *viewController = [LoginViewController alloc] init];
在initWithNibName:bundle: 和awakeFromNib 方法中,我有一些初始化代码。 LoginViewController 有一个名为 LoginViewController.xib 的 .xib 文件。
但是,针对 iOS 9 构建,这些方法永远不会被调用,代码也永远不会运行。但是,除非我像这样初始化我的LoginViewController:
LoginViewController *viewController = [LoginViewController alloc] initWithNibName:nil bundle:nil];
然后代码运行,它工作得非常好。似乎正在加载 .xib 文件,但从未调用过 initWithNibName:bundle: 和 awakeFromNib。
有谁知道为什么在 iOS 9 中 awakeFromNib 在存在相应的 .xib 时默认不会被调用?这个问题在 iOS 8 中不存在(awakeFromNib 被调用,即使我只是使用init 来初始化我的视图控制器)。
【问题讨论】:
-
嗯,这对我来说是合乎逻辑的。没有NIB,所以它不会调用
awakeFromNib。 -
@FreeNickname 抱歉,我忘了说 LoginViewController 确实有一个 .xib 文件。我已经编辑了问题以反映这一点。
-
xib叫什么?
-
@Fogmeister .xib 同名 LoginViewController (LoginViewController.xib)。
-
好吧,你将不得不提供更多的代码或其他东西。您说它与 initWithNibNamed 一起使用...但是您提供的 nib 名称是 nil。这将迫使它不使用笔尖。所以如果你使用它,awakeFromNjb 绝对不应该工作。能不能再解释一下。 init 和 awakeFromNib 中的哪一个在工作/不工作,什么时候工作?
标签: objective-c ios9 awakefromnib