需要澄清MVC设计模式

时间:2015-12-10 09:24:55

标签: ios design-patterns uiview uiviewcontroller

我有一个可重用的UIView,它有自己的.xib文件。这个UIView将被添加到不同的UIViewControllers作为子视图。在MVC设计模式中,我的可重用UIView应该只包含用户界面的代码(UILabels,UIButons等)。我很困惑的是设置UILabels和UIButtons。包含我的UIView的ViewController是否负责设置我的UIView的UIButton点击事件以及我的UILabel显示的内容?我现在遇到的问题是我有多个UIViewControllers重用相同的UIView,但它们都实现了设置我的UIView的相同代码。这最终会在我的UIViewControllers中出现大量重复的代码。如果我将设置代码移动到我的UIView以减少重复代码,那是不是违反了MVC设计模式?有没有办法创建一个只负责设置我的UIView的“控制器”,以便我可以在我的UIViewControllers中重用我的UIView和Controller?

1 个答案:

答案 0 :(得分:0)

假设通过设置意味着指示UIView如何基于某个对象绘制自己,这正是drawRect方法的用途。 UIView还提供了一个initWithFrame方法,如果需要,您甚至可以创建自己的初始化程序。还有一个选择是在UIView子类中创建一个函数,该函数将获取您正在显示的信息,并将设置您想要的视图方式。类似于:setupCustomViewWithMyObject(object)

所有这些都表明您的设置代码应该在您的UIView子类中,并且您没有违反任何内容。