2012-02-02 90 views
7

在Matt Newburg编写的iOS 4中,他指出: “要为UIViewController手动提供视图,请实现其loadView方法...您不得调用超级”。应该从loadView中调用[super loadView]还是不是?

在Erica Sadun的iOS 5开发人员指导手册中,她指出: “loadView方法允许您设置屏幕和布置任何子视图....确保每当从专门用户继承时调用[super loadView]子类如UITableViewController或UITabBarController。“

这对我来说至少是令人困惑的。

回答

4

苹果是真理的来源,他们说没有超级电话。

如果重写此方法,以手动创建你的意见,你 应该这样做并分配层次的根视图到 视图属性。 (您创建的视图应该是唯一的实例,并且不应该与其他视图控制器对象共享 )。

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

[编辑]

在UIViewController类参考周围散射另一个重要的注意事项:

默认的loadView方法尝试从相关联的笔尖 文件加载视图与视图控制器(如果有的话)。

+0

哎呦。出于某种原因,我认为他们没有具体说明。 – 2012-02-02 00:33:59

+0

我对此有个简短的问题。我有AppDelegate并将它的rootView设置为另一个UIViewController类实例(我在其中修改了loadView中的视图)。如果我不调用[super loadView],则会调用三次该方法。如果我称之为,一切都是完美的。那么我错过了苹果公司的文档? 如果我不被允许做[超级loadView]我应该在哪里设置我的视图,如果我不加载视图从笔尖? – andi1984 2012-02-05 16:30:00

+0

如果我将UINavigationController作为rootViewController设置为应用程序委托,并将UIViewController再次推送到navcontroller栈,那么所有内容都是完美的。所以我不明白为什么会出现这些差异。 – andi1984 2012-02-05 16:37:03