并加载NIB / XIB文件?

时间:2010-06-01 16:49:57

标签: iphone objective-c cocoa-touch

我有点好奇,我有一个视图控制器类和一个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;
}
欢呼加里。

3 个答案:

答案 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文件中   与此视图控制器关联。