为啥我的 UIViewController 初始化程序从未被调用?

Posted

技术标签:

【中文标题】为啥我的 UIViewController 初始化程序从未被调用?【英文标题】:Why is my UIViewController initializer never called?为什么我的 UIViewController 初始化程序从未被调用? 【发布时间】:2010-04-12 13:46:00 【问题描述】:

我从一个新模板创建了一个基于视图的项目。有一个使用 XIB 创建的 UIViewController。

在实现中,我取消了注释并添加了一个 NSLog。但这从未被调用:

// The designated initializer. Override to perform setup that is required before the view is loaded.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) 
        // Custom initialization
        NSLog(@"nib");
    
    return self;

因为它是从 nib / xib 初始化的,所以应该肯定会调用它,对吗?但是,事实并非如此。当我将它放入 viewDidLoad 时,我确实收到了一条 NSLog 消息。

【问题讨论】:

初始化视图控制器的代码在哪里? 【参考方案1】:

从 nib/xib 初始化对象时,-initWithCoder: method 将用于初始化。

-initWithNibName:… 从不用于取消归档。

【讨论】:

以上是关于为啥我的 UIViewController 初始化程序从未被调用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 UIViewController 不在其视图的响应者链中?

为啥我的 UIViewController 失去了对打开模式 ViewController 的引用?

我的 UIImageView 中的约束有啥问题,为啥我无法在 UIViewController 上拉伸图像?

为啥来自 customTableViewCell 的 UiTextField 没有在我的 UiViewController 中使用 UITableView 返回字符串

为啥我的财产可能会泄漏,我该如何解决?

UIVIewController 自定义初始化方法