【发布时间】:2020-02-08 11:28:30
【问题描述】:
我正在开发一个使用 Coordinator 和 MVVM 模式的应用程序。
协调器协议如下:
protocol Coordinator: class {
func start()
func start(with deeplink: DeeplinkOption?)
}
start 方法具有启动当前协调器流的逻辑,例如创建对应的初始视图控制器、视图模型等
我尝试通过start(with deeplink: DeeplinkOption?) 方法向Coordinator 协议添加深层链接处理。问题是我需要将深层链接数据传递给特定协调器中已经存在的视图模型,并且该协调器不持有对目标视图模型的引用。例如想象以下堆栈:
appCoordinator
-
聊天协调员
- 聊天界面
- 用户详细信息屏幕
用户当前在用户详细信息屏幕上,我需要将深层链接操作传递给聊天屏幕视图模型。也没有理由从头开始重新创建聊天屏幕,因为它是在 start 方法中完成的,因为聊天屏幕已经在导航堆栈中。
在不存储对相应视图模型的引用的情况下,是否有针对此问题(以及整体协调器模式)的简洁解决方案?
【问题讨论】:
-
Coordinator 和 MVVM 对几乎每个使用它的人来说意味着一些不同的东西。你能解释一下在你的应用程序的单个模块中,什么拥有对每种类型对象的引用以及单个模块是如何实例化的?
标签: ios mvvm coordinator-pattern