带有复杂触摸代码的视图应该有自己的视图控制器



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

视图是一个UIResponder,它接收触摸事件。视图控制器也接收那些触摸事件。但视图控制器是一个控制器对象,响应触摸事件是控制器逻辑,因此视图控制器应该负责知道该做什么取决于哪个视图被触摸,对吧?

所以它是更好的做法把所有的触摸逻辑在视图控制器对象,而不是把它在视图对象?本质上,忽略了视图可以响应触摸的事实。

如果我们把所有的逻辑在视图控制器对象,这是一个好主意有一个视图控制器对象,每个视图需要相当数量的触摸逻辑?所以,不是一个视图控制器有一堆子视图作为接口元素,包含所有的触摸交互代码,我们让每个子视图成为它自己的视图控制器对象的主视图,并让所有那些视图控制器成为父视图控制器的子控制器。

这是一个好方法吗?

谢谢你的帮助

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

最新更新