如果有一个nib文件,会调用loadView吗?

时间:2011-09-24 06:43:19

标签: iphone loadview

如果我覆盖loadView方法,则会调用loadView是否存在nib文件。如果我不覆盖loadView并且有一个nib文件,它会被调用吗?

3 个答案:

答案 0 :(得分:8)

是的,loadView负责根据视图控制器的类名自动从已知的bundle加载nib文件。如果您覆盖loadView并且未调用[super loadView],则不会加载任何笔尖。当调用其loadView属性并且为nil时,UIViewController类将调用view

另请注意,覆盖loadView并调用super很可能不是您想要的。 loadView用于设置self.view属性,就是这样。其他一切都应该发生在viewDidLoad等。

答案 1 :(得分:0)

是:

@implementation iPhoneHomeViewController

- (void)loadView {
    DEBUGLOG(@"view = %@, superview = %@", [self valueForKey:@"_view"], [[self valueForKey:@"_view"] superview]);
    [super loadView];
}

控制台:

GNU gdb 6.3.50-20050815 (Apple version gdb-1705) (Fri Jul  1 10:50:06 UTC 2011) 
Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU 
General Public License, and you are welcome to change it and/or distribute copies of it 
under certain conditions. Type "show copying" to see the conditions. There is absolutely 
no warranty for GDB.  Type "show warranty" for details. This GDB was configured as 
"x86_64-apple-darwin".sharedlibrary apply-load-rules all Attaching to process 1671. 

[Line: 40] -[iPhoneHomeViewController loadView]: view = (null), superview = (null)

答案 2 :(得分:0)

是。无论bundle是否具有Nib,都将始终调用Load视图。 loadView将为UIViewController加载视图,可以来自任何源。

因此,它以两种方式寻找观点

1。检查属性 nibFile ,如果您调用了 initWithNibName:bundle: 或者如果你有故事板 - 故事板也存储在nib文件中创建的所有视图

2. 如果您没有从任何一个源设置nib,那么您计划自己创建视图。在这种情况下,您可以将此视图设置为稍后查看控制器的视图属性。