我在代码和大部分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中
答案 0 :(得分:3)
来自docs:如果为nibName参数指定nil,则必须覆盖loadView方法并在那里创建视图,或者必须在bundle中提供一个nib文件,其名称(不带.nib扩展名)与名称相匹配你的视图控制器类。 (在后一种情况下,类名将成为存储在nibName属性中的名称。)如果不执行这些操作,则视图控制器将无法加载其视图。
答案 1 :(得分:2)
它的工作原理不仅仅是您的笔尖名称与控制器类名称相同。在那种情况下,Apple做了一些魔术。指定笔尖名称通常是一种很好的形式。