我会尽量保持简短:我们启动了应用程序full RxSwift,但我们的协调人开始不堪重负地维护和扩展,所以我们正在重新处理他们,使其不使用RxSwift,现在我们不知道如何使用它们以及将它们保存在哪里。
最简单的例子:带有一个按钮的视图控制器,视图模型,协调器。我在哪里调用coordinator.navigate(to: .mySection)以及如何调用?协调器应该保留在视图控制器中吗?我认为它们应该保留在视图模型中,但是在视图模型中订阅不是推荐的用法。
我不想过度设计这一点,但我希望得到一些有洞察力的帮助。
发布于 2019-10-04 00:07:34
我推荐使用XCoordinator和他们提出的架构MVVM-C,我已经在两个大型/复杂的应用程序中使用过,这很容易。
发布于 2019-05-24 20:26:33
如果您想使用协调器作为ViewModels的依赖项,请查看这个库:Action。
Action使您可以将按钮上的操作与ViewModel绑定。您只需在ViewModel中定义一个操作,并将其绑定到视图中。Action类型只是一个序列,它接受其他序列作为输入,并返回另一个序列作为输出。因此,您不需要在ViewModel上使用DisposeBag。
如果您想查看示例,请查看操作的GitHub项目,或者,如果您想在应用程序示例中查看,Ray Wenderlich RxSwift一书中有一个关于如何集成MVVM和协调器的非常简洁的示例。
发布于 2019-05-25 03:38:32
没有一个MVVM元素直接寻址Coordinators,所以如果您正在使用Soroush的协调器模式的好处,您可能正在使用VIPER,但您可能没有意识到这一点,这并不是真正重要的。
在VIPER中,R代表Routing,它完全符合协调器的定义。
我真正想建议的两件事是:
UIViewController的创建一个独立的协调器,但是我亲自问过索鲁什这个问题,他回答说:这不是协调器的最佳实践。因此,我在最新的应用程序中只使用了两个协调员,并对结果相当满意。附注: MVVM很棒,但它不可伸缩,我谦虚地建议你看看VIPER。这是你可能会发现有用的a good article。
https://stackoverflow.com/questions/56242275
复制相似问题