我正在开发一个使用Coordinator
andMVVM
模式的应用程序。
协调器协议如下所示:
protocol Coordinator: class {
func start()
func start(with deeplink: DeeplinkOption?)
}
该start
方法具有启动当前协调器流程的逻辑,例如创建相应的初始视图控制器、视图模型等。
我尝试通过该方法向Coordinator
协议添加深度链接处理。start(with deeplink: DeeplinkOption?)
问题是我需要将深层链接数据传递给特定协调器中已经存在的视图模型,并且该协调器不持有对目标视图模型的引用。例如想象以下堆栈:
应用协调器
聊天协调员
- 聊天画面
- 用户详细信息屏幕
用户当前在用户详细信息屏幕上,我需要将深层链接操作传递给聊天屏幕视图模型。也没有理由从头开始重新创建聊天屏幕,因为它已在start
方法中完成,因为聊天屏幕已经在导航堆栈中。
对于这个问题(以及整个协调器模式)是否有一个巧妙的解决方案,而不存储对相应视图模型的引用?