如果我重写 loadView 方法,无论是否有 nib 文件都会调用 loadView。如果我不覆盖 loadView 并且有一个 nib 文件,它会被调用吗?
问问题
1079 次
3 回答
8
是的,loadView
负责根据视图控制器的类名从已知包中自动加载 nib 文件。如果您覆盖loadView
并且不调用[super loadView]
,则不会加载任何笔尖。UIViewController 类将loadView
在其view
属性被调用且为 nil 时调用。
另请注意,覆盖loadView
和调用 super 很可能不是您想要的。loadView
用于设置self.view
属性,就是这样。其他一切都应该发生在viewDidLoad
等。
于 2011-09-24T07:14:25.663 回答
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)
于 2011-09-24T15:36:29.357 回答
0
是的。无论捆绑是否有 Nib,加载视图都会被调用。loadView 将负责为 UIViewController 加载视图,该视图可以来自任何来源。
因此,它以两种方式寻找视图
1.检查属性nibFile,如果您调用了initWithNibName:bundle: 或者如果您有故事板 - 故事板也存储在 nib 文件中创建的所有视图
2.如果您没有从任何一个源设置 nib,那么您计划自己创建视图。在这种情况下,您可以稍后将此视图设置为视图控制器的视图属性。
于 2013-12-16T08:22:30.033 回答