我有点好奇,我有一个视图控制器类和一个NIB / XIB(都命名为“MapViewController”)如果我执行以下操作,它会加载具有匹配名称的NIB。
-(id)init {
self = [super initWithNibName:@"MapViewController" bundle:nil];
if(self) {
do things ...
}
return self;
}
如果另一方面我只是指定[super init] Xcode只是寻找一个与控制器名称相匹配的NIB,那它是如何工作的?
-(id)init {
self = [super init];
if(self) {
do things ...
}
return self;
}
欢呼加里。
答案 0 :(得分:7)
来自文档:
如果为nibName指定nil 参数并且不要覆盖 自定义中的loadView方法 子类,默认视图控制器 行为是寻找一个nib文件 谁的名字(没有.nib extension)匹配你的名字 查看控制器类。如果找到了 一,类名成为值 nibName属性的结果 在相应的nib文件中 与此视图控制器关联。
答案 1 :(得分:3)
是的,在这种特殊情况下它会起作用。根据{{3}},调用init
类似于使用initWithNibName:bundle:
作为笔尖名称调用nil
:
如果为nibName指定nil 参数并且不要覆盖 自定义中的loadView方法 子类,默认视图控制器 行为是寻找一个nib文件 谁的名字(没有.nib extension)匹配你的名字 查看控制器类。如果找到了 一,类名成为值 nibName属性的结果 在相应的nib文件中 与此视图控制器关联。
答案 2 :(得分:1)
Xcode只是寻找一个NIB 匹配控制器的名称
相当多:
如果为nibName指定nil 参数并且不要覆盖 自定义中的loadView方法 子类,默认视图控制器 行为是寻找一个nib文件 谁的名字(没有.nib extension)匹配你的名字 查看控制器类。如果找到了 一,类名成为值 nibName属性的结果 在相应的nib文件中 与此视图控制器关联。