Objective-C中的rootViewController和addSubview?

时间:2014-11-06 09:58:03

标签: ios objective-c uiview uiwindow

我开始学习OC。

第一个问题是关于_window.rootviewcontroller[_window addSubview:...]

这两种方式都可以为view设置UIWindow(实际上,UIWindow继承自UIView)。

所以我想知道的是:

仅使用rootviewcontroller方法设置window的{​​{1}},还是其他的?

更确切地说:

addSubview

含义

_window.rootviewcontroller = viewController;

[_window addSubview: viewController.view];

或其他什么?

非常感谢。

有没有人可以告诉我有关UIWindow和rootViewController属性的一些细节?

2 个答案:

答案 0 :(得分:0)

如果您使用addSubview:必须传递UIView个实例,但是当您致电rootviewcontroller时,您将UIViewController个实例传递给UIWindow

您可以使用addSubview,但必须将UIView superview(需要UIViewController)与UIWindow相关联,才能使其行为相同, 类似的东西(过去的方式:

[window addSubview:myViewController.view];
[window makeKeyAndVisible];

使用rootviewcontroller它会为您完成。

这取自Apple:

  

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

答案 1 :(得分:-2)

显然不是。根视图控制器通常分配给appdelegate类中的窗口。 此外,根视图控制器始终与UINavigationController关联。因此,UINavigationController的任何根视图控制器都将是其内容视图控制器。

其中,添加subview只是UIView类的一种方法。这有助于将任何子视图添加到相应的视图中。