也许这是一个愚蠢的问题,但我在 iOS 开发过程中遇到过很多次。
有时我会开发一个我想在多个屏幕上使用的 View 组件,所以我会决定继承 UIView
并使其成为我可以在多个地方使用的东西。
然后,我开始为其添加功能。也许它需要响应 NSNotification
,或者它应该响应用户触摸。
在某个时候,我开始怀疑我是否真的应该创建一个 UIViewController
子类,并将其作为子 ViewController 添加到我的 UI 中。
对于向 UIView
添加一些行为与何时创建完整的 UIViewController
之间的界线在哪里划清界限是否达成共识?
最佳答案
我不能告诉你共识,但这是我的观点:
子类 UIView
仅当...
- 你想做自定义绘图
- 您需要自定义一个已经存在的
UIView
子类的一些行为 - 您对布局 subview 有特殊需求。不过,大多数布局都可以通过
UIViewController
完成。 - 可能是手势识别器无法完成的特殊触摸处理
子类 UIViewController
在所有其他情况下。无论如何,您几乎总是需要一个 Controller ,用于编写将 View 和模型绑定(bind)在一起的胶水代码,或用于处理用户交互。因此,Apple 在 UIKit 中让 Controller 可以轻松完成所有工作,并让 View 尽可能“愚蠢”。例如,嵌套 Controller 以创建复杂的 View 层次结构非常简单,无需具有单个 View 子类。
子类化 UIView
不是人们应该做的第一件事的一个指标是 UIView class reference 中标题为“子类化的替代方案”的部分。 .子类化 UIViewController
是首选的指示是 UIViewController class reference 中没有这样的部分:-)
关于iOS——何时创建子 ViewController 与 UIView 子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17225196/