2011-03-27 60 views
7

我已经看到自定义子视图实现为UIViewController子类,但可能已经实现为UIView子类。何时为自定义子视图子类UIViewController?

什么时候应该子类UIViewController而不是UIView子视图?子类化UIViewController有什么缺点吗?

+0

也许当你有复杂子视图需要实现其他子视图。取决于情况:-) – Vinzius 2011-03-27 15:27:37

回答

6

就我个人而言,当我需要一些重要的逻辑继续时,我会用UIViewController的子类来做。另外,如果我正在寻找一些你从UIViewController(例如以模态方式或在导航控制器中呈现。

如果你正在做一些相当简单或轻量级的事情,一个UIView子类通常就足够了。我似乎在制作自定义按钮和表格视图单元格时经常使用它们。

在我的经验,我发现自己使用更多的UIViewController子比UIView子类,但是这可能不是最好的,它只是恰巧,我觉得有点更舒适的使用视图控制器,而不是直线上升的观点。

2

如果你打算在你的“视图”中使用AdBannerView,你也可以继承UIViewController。 AdBannerView需要一个UIViewController才能工作。

+0

+1不知道。 – hpique 2011-03-27 17:37:01

4

看看苹果公司不得不说的Controller Objectsthe MVC design pattern

在iOS系统中控制器一般都有望填补至少一个下列角色:

  1. 协调控制器提供专用的逻辑。他们响应委托消息,通知和IBActions。协调控制器还在其他对象之间建立连接,并经常管理这些对象的创建和销毁。

  2. 视图控制器,特别是UIViewControllers,管理一个“屏幕”内容的显示并触发到下一个“屏幕”的转换。他们回应记忆警告和旋转事件。

  3. 中介控制器存在于OS X中,但其角色通常由iOS中的视图控制器填充。他们充当意见和模型之间的中介;视图接收输入时更新模型,模型更改时更新视图。

如果您正在实施的行为符合这些类别之一,那么您可能需要创建一个控制器对象。如果你的逻辑只关心数据的显示(并可能响应用户输入),那么它可能属于视图层。如果你的逻辑是关于数据本身,那么它可能属于模型。 如果您无法在任何这些图层中找到适合您的逻辑的图形,那么您可能应该对它们进行不同的建模,作为属于不同图层中不同对象的不同职责的组合。即请求数据从中介视图控制器显示的视图。

1

我遵循的拇指规则是,如果您正在做自定义绘图,子类UIView。否则,继承UIViewController。

相关问题