繁体   English   中英

何时将UIViewController子类化为自定义子视图?

[英]When to subclass UIViewController for custom subview?

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

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

就个人而言,当我需要一些重要的逻辑时,我会使用UIViewController子类。 此外,如果我正在寻找您从UIViewController获得的一些行为,例如以模态方式或在导航控制器中呈现它。

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

根据我的经验,我发现自己使用了比UIView子类更多的UIViewController子类,但这可能不是最好的,只是碰巧我觉得使用视图控制器而不是直观视图更舒服。

看看Apple对Controller ObjectsMVC设计模式的看法

在iOS控制器中,通常希望至少填充以下一个角色:

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

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

  3. OS X中存在中介控制器,但它们的作用通常由iOS中的视图控制器填充。 它们充当观点和模型之间的中介; 当视图在模型更改时接收输入和更新视图时更新模型。

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

如果要在“视图”中使用AdBannerView,也可以将UIViewController子类化。 AdBannerView需要一个UIViewController才能工作。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM