viewDidLoad(),LoadView()

时间:2011-03-02 05:41:14

标签: iphone objective-c viewdidload loadview

viewDidLoad() LoadView()之间有什么区别?他们以何种方式彼此不同?

在不使用XIB开发应用程序时哪一个更好?

谢谢。

7 个答案:

答案 0 :(得分:51)

视图加载完成后调用

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];
}
*/

这些评论清晰易懂。

答案 1 :(得分:17)

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

LoadView()
当您想以编程方式创建视图时(不使用Interface Builder),将使用

答案 2 :(得分:7)

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

如果在代码中初始化控制器,viewController将首先调用loadView,然后调用viewDidLoad。您可以在loadView或viewDidLoad中进行所有初始化,具体取决于您的偏好。

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

答案 3 :(得分:2)

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

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

答案 4 :(得分:0)

不是很明显吗?

调用

viewDidLoad ...当视图完成加载时。

告诉加载视图时调用

loadView

既不好也不坏。这一切都取决于你的设计。

祝你好运:)

答案 5 :(得分:0)

如果没有关联的nib,

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

当您的视图加载到内存viewDidLoad()方法时,您可以根据需要进行自定义初始化。

答案 6 :(得分:-6)

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

因此最好使用LoadView方法。