我想学的是窗口和viewcontroller之间的区别。我知道每个应用程序只能有一个窗口。但是你可以有多个viewcontrollers。当我创建一个基于基于窗口的应用程序模板的项目时,我只得到一个窗口。我可以创建自己的viewcontrollers,但我也知道我可以在基于窗口的应用程序中将内容直接放到窗口上(如果我错了,我认为纠正我)。但是对于基于视图的应用程序,我当然会得到一个可以添加内容的视图。如果我有任何意义,任何人都可以为我澄清这些吗?
答案 0 :(得分:1)
基本上,您有一个UIWindow
实例,它将您的所有UIViewControllers
和UIViews
作为视图层次结构的一部分托管。这就是UIApplication
有一个电话[UIApplication sharedApplication].keyWindow
来访问“根”视图的原因。
例如,您可以拥有以下堆栈:
[UIApplication sharedApplication].keyWindow
- >
MyView
- >
MyOtherViewController
有关详细信息,请阅读UIWindow和UIViewController上的开发人员文档,其中提供了有关差异的绝佳解释。
答案 1 :(得分:1)
他们是完全不同的两件事。窗口是一个特殊的视图,主要是因为它没有超视图;它是容纳所有其他视图的容器。由于它位于视图包含树的根部,因此窗口有助于将事件分派到适当的视图并根据需要重新绘制。除此之外,窗口不会过多担心它包含的视图。
视图控制器根本不是视图。它是一个管理视图及其所有子视图的控制器。视图控制器通常响应来自控件的用户输入,使用所需数据填充视图,管理子视图的可见性等。视图控制器管理的视图在视图控制器处于活动状态时安装在窗口中,但视图控制器通常没有直接引用窗口本身。