将手势识别器/操作方法附加到视图会违反模型视图控制器吗?

Ser*_*nce 6 iphone model-view-controller cocoa-touch objective-c ios

想要问人们对此的看法.我有一个uiimageview子类,在它的初始化器中我向imageview添加了一些手势识别器,我还在课堂中包含了手势识别器委托方法.我的问题是,这是否违反了模型视图控制器?是否所有与控制视图有关的代码都在视图控制器中?与此相同,在视图中放置按钮操作方法.无论如何,有兴趣听取意见.

Geo*_*roy 5

从某种意义上说,是的,这违反了MVC模式.正如你所说,视图不应该与如何控制它有关,将这些代码分组到应用程序的另一部分是一个更好的习惯.

而且,OOP的一大优势是能够重用类.这样的视图可以毫无问题地重复使用,因为所有特定于应用程序的控制代码都不在其中.如果在视图中包含委托方法,则无法重复使用它,或者每次都必须更改委托方法!


但规则是针对一般情况的.看一下Mac OS X的Cocoa框架:您已经获得了可可绑定,允许您直接更改视图内容以响应模型中的数据更改.这也以某种方式违反了MVC模式.

另一个例子,请参阅UIViewController.它必须是一个控制器,但它与视图紧密相连,问题仍然存在.视图和控制器之间的分离并不像MVC所希望的那样明确.


总而言之,我会说遵循模式(只要符合您的需求)和使用给定框架遵循模式的方式是一个好习惯.但是有一些情况,如果你明确说明,创建一些捷径并打破规则可能会很有趣.