具有复杂触摸代码的视图是否具有自己的视图控制器?

时间:2016-11-11 18:28:44

标签: ios swift

当我们构建应用程序的视图控制器时 - 查看体系结构(我相信我正确地使用了这个词,因为它涉及对象的关系以及它们如何协同工作以及它们扮演什么角色玩,而不是我们使用的框架等):

视图是UIResponder,它接收触摸事件。视图控制器还接收这些触摸事件。但View Controller是一个控制器对象,对触摸事件的响应是控制器逻辑,因此视图控制器应该负责根据触摸的视图知道该做什么,对吧?

因此,更好的做法是将所有触摸逻辑放在视图控制器对象中,而不是将其放在视图对象中?从本质上讲,忽略了视图可以响应触摸的事实。

如果我们将所有逻辑放在View Controller对象中,为每个需要大量触摸逻辑的视图设置View Controller对象是否是个好主意?因此,我们将每个子视图作为其自己的View Controller对象的主视图,并将所有这些视图控制器都设置为父视图的子视图,而不是将一组子视图作为接口元素的视图控制器包含所有触摸交互代码。查看控制器。

这是一个好方法吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

如果视图要封装某种可重用的逻辑并且可能是状态,比如UIButton或UITextField,那么视图处理它自己的触摸事件并将它们转换为UIControlEvents是有意义的,因为viewController真的只有关心事件,而不是任何触摸细节的细节。在其他情况下,例如,如果允许在元素之间进行拖放,则将此逻辑放在viewController中可能更有意义。在某些情况下,比如UITableView,您可以分割差异并在视图中放置尽可能多的通用功能,但将一些职责委托给ViewController以允许自定义功能。