【问题标题】:Should the View in MVC have its own class?MVC 中的视图应该有自己的类吗?
【发布时间】:2011-03-31 05:17:34
【问题描述】:

我对与 iPhone 开发相关的 MVC 范例有点困惑。 目前,我将应用拆分为:

  1. 模型(FooModel.h、FooModel.m)

  2. 查看 (FooView.xib)

  3. 控制器(FooController.h, FooController.m)

但是我应该使用 UIView (FooView.h, FooView.m) 的子类来代替 View 吗?

这只是一个简单的游戏应用程序。

【问题讨论】:

    标签: iphone objective-c model-view-controller uiview


    【解决方案1】:

    这应该有助于您理解在 iphone 开发中实现的 MVC:

    Understanding View Controllers in Cocoa Touch

    【讨论】:

      【解决方案2】:

      NIB 既不是控制器也不是视图; NIB 由控制器 (UIViewController.nibName) 引用并用于实例化控制器的视图。默认 nib 名称是您的控制器类的名称(即,如果您没有设置 nib 名称,它将自动查找“MyViewController.nib”)。

      如果您需要编写完全独立的 UI 代码,则应该在视图中。这可能是一个自定义控件或一组控件(例如颜色选择器视图)。

      如果您需要在 UI 中实现任何特定于 Foo 的内容,例如自定义绘图/触摸处理,您可以添加 FooView.m。此外,如果您需要访问 FooView 的子视图,将它们设置为 FooView(而不是 FooController)上的 outlet 可能会更容易;这意味着您无需在 viewDidUnload 中取消设置。

      标准命名约定将其称为“FooViewController”,因为它与 UIView 层次结构紧密耦合(并且您可能有一个额外的 FooController 单独管理模型;也许还有一个 FooWebController 用于同一模型的 Web 界面)。

      最终,从长远来看,做最简单的事情。就个人而言,我不会添加额外的类,直到它们明显变得必要,但我尝试构造我的代码,以便轻松重构位。一旦我编写了更多代码,我就会更好地了解应该如何构建它,并且更好地了解需要做多少工作。这可能意味着我花更多时间进行重构,但这也意味着我花更少的时间进行(错误的)设计,或编写由于一些架构更改而只使用过一次的类。

      希望这也意味着版本会更快推出。这个很重要。 UI 需求变化太快,无法在上面花费大量时间;我们即将对我们的一款应用进行全面的 UI 大修,以更好地支持 iPad 和多任务处理。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-13
        相关资源
        最近更新 更多