【发布时间】:2016-10-14 12:00:27
【问题描述】:
我是一个新手程序员,所以我想征求人们的意见/建议,看看他们在我所处的情况下会做什么。
背景
由于我用来实现类似窗口的“弹出”的库的限制,我目前正在开发一个 UIView 类(我们称之为Menu),它创建UIImagePickers 和各种其他视图控制器(VCs)。但是,由于 UIView 本身存在于它自己产生的任何 VC 之上,我不得不将任何 VC 创建方法委托给 Menu 的 parentVC,以便我可以关闭 Menu 视图,创建任何必要的 VC,然后(有时)另外恢复Menu 视图。
问题
我目前正在为任何具有Menu 视图的 UIViewController 复制和粘贴数百行委托方法。这些委托方法对于每个视图控制器都是相同的,并且存在在那里,因为这些方法具有UIViewController 特定功能,例如presentViewController。我很想将 parentVC 作为参数传递给Menu,以减少重复代码的数量,但这似乎是 MVC-unkosher。解决这个问题的好方法是什么?
【问题讨论】:
-
创建
MainViewController,然后将其子类化。在MainViewController中实现你需要的所有方法。 -
由于使用的是Swift,所以可以采用面向协议的编程;创建一个实现所有委托方法的扩展,然后您可以在任何需要它的视图控制器中简单地采用此扩展。这类似于使用子类,但更灵活,因为您可以根据需要采用多个扩展(协议)
标签: ios swift oop model-view-controller delegates