什么类型的代码正确:AppDelegate 中的 addSubview 或直接控制器分配?

Posted

技术标签:

【中文标题】什么类型的代码正确:AppDelegate 中的 addSubview 或直接控制器分配?【英文标题】:What type of code correct: addSubview or direct controller assignment in AppDelegate? 【发布时间】:2011-07-14 16:08:43 【问题描述】:

什么类型的代码是正确的,它们是如何工作的(如果结果相同,第一个和第二个有什么区别):

在应用程序中:didFinishLaunchingWithOptions:为了使第一个控制器的视图可见,我可以使用这样的方法:

[self.window addSubview:myController.view];
[self.window makeKeyAndVisible];

self.window.rootViewController = self.myController;
[self.window makeKeyAndVisible];

什么是差异?哪个更正确、更安全?

问候,亚历克斯。

【问题讨论】:

【参考方案1】:

Window也是继承自UIView

rootViewController 是 Window 的属性,而不是来自 UIView。

根视图控制器提供窗口的内容视图。将视图控制器分配给该属性(以编程方式或使用 Interface Builder)将视图控制器的视图安装为窗口的内容视图。如果窗口具有现有的视图层次结构,则在安装新视图之前会删除旧视图。

此属性的默认值为 nil。

addsubview 方法继承自 UIView。

如果你第一次在你的窗口上使用这个,你会得到同样的效果。

【讨论】:

以上是关于什么类型的代码正确:AppDelegate 中的 addSubview 或直接控制器分配?的主要内容,如果未能解决你的问题,请参考以下文章

错误:“AppDelegate?”类型的值没有成员“在场”

AppDelegate 和 .xib 未正确实施,但构建成功?

AppDelegate 中的奇怪泄漏

如果它是子视图控制器,如何将 AppDelegate 中的 managedObjectContext 传递给正确的视图控制器?

没有从 AppDelegate 设置 RootViewController?

为啥 AppDelegate 中的窗口为零