Tag: Mvvmc

带有iOS中故事板的MVVMC

MVVM是MVC的替代品之一。 MVX模式未解决的缺点之一是视图导航。 MVVM也没有。 因此,提到了MVVMC。 C作为协调者是将导航与视图控制器分开。 使用MVVMC时,我们发现它将无法使用情节提要。 加入协调器后,诸如绑定,具有更好的可维护性的自动布局和可见性之类的所有好处都会消失。 原因是ViewController是调用performSegue并处理prepareForSegue那个。 如果我们想将这些方法转移到协调器上,我们需要找到一种方法来处理困难。 只要可以引用viewController,协调器就可以始终处理performSegue。 通过Apple文档,我们知道运行时的prepareForSegue 在segue创建之后且perform前调用。 为了在协调器中处理prepareForSegue ,我们需要在运行时进行一些技巧。 所以提出了一个问题。 我们是否要替换所有视图控制器的prepareForSegue ? 个人我更喜欢灵活性。 我不认为在所有情况下使用相同设计模式的整个应用程序都有意义。 另外,我不希望任何人只有在了解其工作原理后才能开始编码。 最好还是调用视图控制器的prepareForSegue 。 因此,我们可以认为视图控制器或协调器的prepareForSegue将首先被调用,或者我们可以认为一个是另一个的回调。 这导致使用毛毛雨。 通过这次采访,我们知道快速的动态编程不会很快到来。 似乎没有比迅速扑朔迷离的效果更好的方法了。 如果您发现我们不使用任何方法即可实现的任何方法,请发表评论。 因此,在需要协调器帮助时,让视图控制器可以采用一个协议。 protocol Coordinated { var coordinationDelegate: CoordinationDelegate? { get set } } 然后协调员应该处理方法 protocol CoordinationDelegate { func prepareForSegue(segue: UIStoryboardSegue) } 单一协调员 对于2个简单视图,假设我们要构建一个城市列表视图和一个城市详细信息视图。 MVVMC结构可以设计如下。 城市协调员创建城市视图模型和视图控制器。 因此,城市列表视图控制器和城市协调器分别采用协议。 class MVVMCSCityListViewController: UITableViewController, […]