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