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



如果我重写loadView方法,loadView将被调用是否有一个nib文件。如果我不重写loadView而有一个nib文件,它会被调用吗?

是的,loadView负责根据视图控制器的类名从已知的bundle中自动加载nib文件。如果重写loadView而不调用[super loadView],则不会加载任何笔尖。UIViewController类将在view属性被调用时调用loadView,并且CC_5属性为nil。

还要注意,重写loadView并调用super很可能不是您想要的。loadView用于设置self.view属性,就是这样。

是:

@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)

是。加载视图总是会被调用,不管bundle有没有Nib。loadView将有加载UIViewController视图的工作,它可以来自任何来源。

它通过两种方式查找视图

1。检查属性nibFile,如果您调用了initWithNibName:bundle:,则可以设置该属性或者如果你有storyboard storyboard也会将所有创建的视图存储在一个nib文件中

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

相关内容

  • 没有找到相关文章

最新更新