iOS 编程中的“视图控制器”名称有点令人困惑,因为它在 MVC 模型中包含“视图”和“控制器”这两个词。“视图控制器”实际上只是控制器的另一个名称(因为视图实际上主要由界面生成器完成)。为什么叫“视图控制器”?是不是因为这个控制器也完成了所有视图属性的更新和事件处理?
4 回答
是的,aUIViewController
存在于 MVC 的“控制器”层中。但它是控制和更新视图的特殊控制器。视图控制器也可以处理事件,因为它们派生自UIResponder
.
您还可以通过子类化来创建通用控制器NSObject
。例如管理帐户等的帐户控制器。您实际上可以在 iOS SDK 中找到其他控制器类,例如UIDocumentInteractionController
.
从iOS 视图控制器编程指南:
对于 iOS 应用程序,视图控制器在应用程序的数据和它的视觉外观之间提供了一个重要的链接。了解何时以及如何使用视图控制器对于 iOS 应用程序的设计至关重要。视图控制器是模型-视图-控制器设计范例中的传统控制器对象,但它们还可以做更多的事情。在 iOS 应用程序中,视图控制器提供了管理基本应用程序行为所需的大部分逻辑。例如,视图控制器管理屏幕内容的呈现和删除,并管理视图的重新定向以响应设备方向的变化。
“控制器”跟随控制器。如果我正在为椅子编写控制器,我会称它为 ChairController。由于正在控制 UIView,因此将其称为 UIViewController 是否有意义?视图本身只负责显示,但显示什么的逻辑取决于它的控制器。
来自 Apple 文档 - http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html
UIViewController 类为所有 iOS 应用程序提供了基本的视图管理模型。
基本上,它是您的视图的容器,并且处理的逻辑不仅仅是您的视图所做的视觉显示。
必要时,视图控制器:
- 调整大小并展示其观点
- 调整视图的内容
- 当用户与视图交互时代表视图执行操作
您应该将“视图控制器”视为“控制视图的类”。
这是一个经典的模型视图控制器模式(MVC)。
AUIViewController
具有类型视图,UIView
您可以UIView
根据每个特定控制器的业务对象(模型)对其进行更新。
此外,您的 , 上发生的事件UIView
将发送回您UIViewController
以正确处理它们。