为什么我的initWithNib方法在视图控制器加载时不被调用?
问题描述:
我有一个继承自UIViewController的类。在那里,我想作出一些伊娃初始化是这样的:为什么我的initWithNib方法在视图控制器加载时不被调用?
- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle { // Load the view nib
NSLog(@"Hello Earth!");
if (self = [super initWithNibName:nibName bundle:nibBundle]) {
self.visibleIndex = 0;
NSLog(@"Hello Planet!");
}
return self;
}
出于某种原因,我看到从笔尖加载的内容。但是由于另一个原因,这个初始化器永远不会被调用。我从来没有得到日志消息。那有什么问题?我肯定有一个笔尖,所以实际上这必须被调用,对吧?
答
如果您的UIViewController是由nib创建的,则不使用此方法。您需要覆盖viewDidLoad:
-(void) viewDidLoad {
[super viewDidLoad];
NSLog(@"Hello Planet");
}
initWithNibName仅用于通过代码实际实例化控制器的情况。
答
我认为你在考虑viewLoaded
而不是initWithNibName
。如果你想以编程方式设置视图,viewLoaded就是所谓的。如果您正在加载一个笔尖,则会调用initWithNibName
....因此名称?但是直到viewDidLoad
才能完成视图的设置,但其他初始化的东西应该在initWithNibName
中完成,例如,设置任何数组或其他变量。