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 文件中(相当于“旧”笔尖) awakeFromNibinit* 方法之间的区别(可能很重要)是它们返回一个实例,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 展示视图控制器

iOS5 storyboard中怎么隐藏NavigationBar

iOS5 Storyboard UIViewController 的故事板调用了哪个init方法?

在 iOS 5 上使用 Segues/Storyboard 弹出当前视图

使用模态呈现的 NavigationController(iOS 5 - Storyboard)时,委托不起作用

iOS 5:使用 Xcode/Storyboard 在工具栏中定位条形按钮项