关于initWithNibName的问题

时间:2011-02-02 19:24:46

标签: iphone

我在代码和大部分GUI中都创建了所有控制器。我用IB制作了一些GUI。然后,我将文件的所有者设置为viewcontroller,并将文件所有者的连接拖到视图中。但initWithNibName让我感到困惑......

我覆盖了指定的初始化程序

- (id)init {
    [super initWithNibName:nil bundle:nil];

    return self;
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    return [self init];
}

为什么我不需要设置viewController在init-initalizer中使用哪个nib?因为它没有。我以为我必须使用[super initWithNibName:@“SomeNib​​”bundle:nil];

在init-initalizer中

2 个答案:

答案 0 :(得分:3)

来自docs:如果为nibName参数指定nil,则必须覆盖loadView方法并在那里创建视图,或者必须在bundle中提供一个nib文件,其名称(不带.nib扩展名)与名称相匹配你的视图控制器类。 (在后一种情况下,类名将成为存储在nibName属性中的名称。)如果不执行这些操作,则视图控制器将无法加载其视图。

答案 1 :(得分:2)

它的工作原理不仅仅是您的笔尖名称与控制器类名称相同。在那种情况下,Apple做了一些魔术。指定笔尖名称通常是一种很好的形式。