【问题标题】:Should the View in MVC have its own class?MVC 中的视图应该有自己的类吗?
【发布时间】:2011-03-31 05:17:34
【问题描述】:
我对与 iPhone 开发相关的 MVC 范例有点困惑。
目前,我将应用拆分为:
模型(FooModel.h、FooModel.m)
查看 (FooView.xib)
控制器(FooController.h,
FooController.m)
但是我应该使用 UIView (FooView.h, FooView.m) 的子类来代替 View 吗?
这只是一个简单的游戏应用程序。
【问题讨论】:
标签:
iphone
objective-c
model-view-controller
uiview
【解决方案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 和多任务处理。