16

viewDidLoad()LoadView()有什么区别?它们在哪些方面彼此不同?

当我们不使用 XIB 开发应用程序时,哪一个更好?

谢谢 。

4

7 回答 7

54

ViewDidLoad在视图加载完成loadView时调用,并在加载开始时调用。

当你创建一个新项目时,你会看到对这些方法的评论,这些评论清楚地给出了你应该使用哪个函数的提示

看到这个

/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
}
*/


/*
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
}
*/

这些评论清晰易懂。

于 2011-03-02T05:58:33.523 回答
16
viewDidLoad()

当您从 NIB 加载视图并希望在启动后执行任何自定义时使用。

LoadView()

当您想以编程方式创建视图时使用(不使用界面生成器)。

于 2013-08-21T08:29:07.680 回答
7

如果您打算使用 IB 来构建您的 UI,您应该在 viewDidLoad 中完成所有后 IB 初始化。如果您使用 nib 初始化控制器,则该类根本不会调用 loadView。

如果在代码中初始化控制器,viewController会先调用loadView,再调用viewDidLoad。您可以根据自己的喜好在 loadView 或 viewDidLoad 中进行所有初始化。

但是,如果您决定使用 loadView,请务必在尝试读取 self.view 之前设置 view 属性,否则您将进入无限循环并崩溃。

于 2011-03-02T06:12:18.163 回答
2

如果您从 stroyboard 或 xib 文件初始化视图,请不要覆盖此方法或在内部调用 [super loadView]。如果您在方法内调用 [super loadView],最好不要覆盖此方法并将以下代码放入您的 viewDidLoad 方法。

如果您以编程方式初始化视图,则永远不要调用 [super loadView]。并且您必须将您的 rootView 分配给 self.view 属性,否则您可能会遇到完美的崩溃。

于 2013-06-08T07:23:58.323 回答
0

这不是很明显吗?

viewDidLoad被称为...当视图完成加载时。

loadView当视图被告知加载时调用。

两者都不是更好或更坏。这完全取决于您的设计。

祝你好运 :)

于 2011-03-02T05:50:21.350 回答
0

如果没有关联的 nib,视图控制器会从与其关联的 nib 加载其视图,然后它会自动调用它的 loadView() 方法来填充它的视图。在这种情况下,您需要实现 loadView() 方法。默认情况下它返回 nil

当您的视图加载到内存中时 viewDidLoad() 方法在这里被调用,您可以根据您的要求进行自定义初始化。

于 2011-03-02T07:11:41.833 回答
-7

如果您正在开发应用程序而不使用xib LoadView()方法,并且如果有 xib,则ViewDidLoad调用方法

所以最好使用 LoadView 方法。

于 2011-03-02T05:57:30.357 回答