【问题标题】:In IOS programming, is a "View Controller" actually a controller?在IOS编程中,“视图控制器”实际上是控制器吗?
【发布时间】:2012-04-30 00:45:09
【问题描述】:

iOS 编程中的“View Controller”名称有点令人困惑,因为它在 MVC 模型中包含“View”和“Controller”这两个词。 “视图控制器”实际上只是控制器的另一个名称(因为视图实际上主要由界面生成器完成)。为什么叫“视图控制器”?是不是因为这个控制器也完成了所有视图属性的更新和事件处理?

【问题讨论】:

    标签: ios model-view-controller viewcontroller


    【解决方案1】:

    “控制器”跟随作为控制器的事物。如果我正在为椅子编写控制器,我会称它为 ChairController。由于正在控制 UIView,因此将其称为 UIViewController 是否有意义?视图本身只负责显示,但显示什么的逻辑由它的控制器决定。

    【讨论】:

      【解决方案2】:

      是的,UIViewController 位于 MVC 的“控制器”层内。但它是控制和更新视图的特殊控制器。视图控制器也可以处理事件,因为它们派生自 UIResponder

      您还可以通过继承 NSObject 来创建通用控制器。例如管理帐户等的帐户控制器。您实际上可以在 iOS SDK 中找到其他控制器类,例如UIDocumentInteractionController.

      来自iOS 视图控制器编程指南

      对于 iOS 应用程序,视图控制器提供了一个重要的链接。 应用程序的数据及其视觉外观。了解何时和 如何使用视图控制器对 iOS 的设计至关重要 应用程序。视图控制器是传统的控制器对象 模型-视图-控制器设计范式,但它们也做得更多。 在 iOS 应用程序中,视图控制器提供了许多所需的逻辑 管理基本的应用程序行为。例如,视图控制器 管理屏幕上内容的呈现和删除,以及 他们管理视图的重新定向以响应设备 方向变化。

      【讨论】:

        【解决方案3】:

        来自 Apple 文档 - http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html

        UIViewController 类为所有 iOS 应用程序提供了基本的视图管理模型。

        基本上,它是您的视图的容器,并且处理的逻辑不仅仅是您的视图所做的视觉显示。

        如果需要,一个视图控制器:

        • 调整其视图的大小和布局
        • 调整视图的内容
        • 在用户与视图交互时代表视图进行操作

        【讨论】:

          【解决方案4】:

          您应该将“View Controller”视为“控制视图的类”。

          这是经典的Model View Controller pattern (MVC)

          UIViewController 具有 UIView 类型的视图,您可以根据每个特定控制器的业务对象(模型)更新此 UIView

          此外,在您的 UIView 上发生的事件会被发送回您的 UIViewController 以便正确处理。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-08-27
            • 2023-03-29
            • 1970-01-01
            • 2014-08-14
            • 1970-01-01
            相关资源
            最近更新 更多