Window和ViewController之间的区别

时间:2011-07-06 15:57:48

标签: iphone uiviewcontroller

我想学的是窗口和viewcontroller之间的区别。我知道每个应用程序只能有一个窗口。但是你可以有多个viewcontrollers。当我创建一个基于基于窗口的应用程序模板的项目时,我只得到一个窗口。我可以创建自己的viewcontrollers,但我也知道我可以在基于窗口的应用程序中将内容直接放到窗口上(如果我错了,我认为纠正我)。但是对于基于视图的应用程序,我当然会得到一个可以添加内容的视图。如果我有任何意义,任何人都可以为我澄清这些吗?

2 个答案:

答案 0 :(得分:1)

基本上,您有一个UIWindow实例,它将您的所有UIViewControllersUIViews作为视图层次结构的一部分托管。这就是UIApplication有一个电话[UIApplication sharedApplication].keyWindow来访问“根”视图的原因。

例如,您可以拥有以下堆栈:

[UIApplication sharedApplication].keyWindow - > MyView - > MyOtherViewController

有关详细信息,请阅读UIWindowUIViewController上的开发人员文档,其中提供了有关差异的绝佳解释。

答案 1 :(得分:1)

他们是完全不同的两件事。窗口是一个特殊的视图,主要是因为它没有超视图;它是容纳所有其他视图的容器。由于它位于视图包含树的根部,因此窗口有助于将事件分派到适当的视图并根据需要重新绘制。除此之外,窗口不会过多担心它包含的视图。

视图控制器根本不是视图。它是一个管理视图及其所有子视图的控制器。视图控制器通常响应来自控件的用户输入,使用所需数据填充视图,管理子视图的可见性等。视图控制器管理的视图在视图控制器处于活动状态时安装在窗口中,但视图控制器通常没有直接引用窗口本身。