iOS5 Storyboard UIViewController 的故事板调用了哪个init方法?
Posted
技术标签:
【中文标题】iOS5 Storyboard UIViewController 的故事板调用了哪个init方法?【英文标题】:iOS5 Storyboard UIViewController which init method is called by the storyboard? 【发布时间】:2012-02-04 16:28:05 【问题描述】:对于添加到故事板的UIViewControllers
,故事板调用了哪个init
方法?
【问题讨论】:
【参考方案1】:使用的初始化器是initWithCoder:
- (id)initWithCoder:(NSCoder *)decoder
之后你还会收到awakeFromNib
消息。
【讨论】:
只有我一个人觉得奇怪的是默认(?)初始化不是从 initWithCoder 调用的吗? 不,它不是指定的 init,init 应该调用另一个具有(通常)更多参数的 init,然后调用 [super init]。在这种情况下,似乎 initWithCoder 是指定的 init initWithCoder: 是任何实现 NSCoding 的类的指定初始化器。【参考方案2】:我相信是awakeFromNib
【讨论】:
awakeFromNib 也被调用,因为我们的UIViewControllers
被“封装”在您的 .storyboard 文件中(相当于“旧”笔尖)
awakeFromNib
和 init*
方法之间的区别(可能很重要)是它们返回一个实例,awakeFromNib
没有。【参考方案3】:
是- (id)initWithCoder:(NSCoder *)decoder
因此,如果您必须进行自定义初始化,假设使用自定义寻呼机控制器,您必须像
- (id)initWithCoder:(NSCoder *)decoder
self = [super initWithCoder:decoder];
return [self initWithViewControllers:@[self.playerViewController, self.categoriesViewController]
andTitles:@[@"Player",@"Categories"]];
【讨论】:
以上是关于iOS5 Storyboard UIViewController 的故事板调用了哪个init方法?的主要内容,如果未能解决你的问题,请参考以下文章
iOS5 storyboard中怎么隐藏NavigationBar
iOS5 Storyboard UIViewController 的故事板调用了哪个init方法?
在 iOS 5 上使用 Segues/Storyboard 弹出当前视图