首页 > 解决方案 > 在 iOS 上以 MVVM-C 模式将数据传递给现有视图模型

问题描述

我正在开发一个使用CoordinatorandMVVM模式的应用程序。

协调器协议如下所示:

protocol Coordinator: class {
    func start()
    func start(with deeplink: DeeplinkOption?)
}

start方法具有启动当前协调器流程的逻辑,例如创建相应的初始视图控制器、视图模型等。

我尝试通过该方法向Coordinator协议添加深度链接处理。start(with deeplink: DeeplinkOption?)问题是我需要将深层链接数据传递给特定协调器中已经存在的视图模型,并且该协调器不持有对目标视图模型的引用。例如想象以下堆栈:

用户当前在用户详细信息屏幕上,我需要将深层链接操作传递给聊天屏幕视图模型。也没有理由从头开始重新创建聊天屏幕,因为它已在start方法中完成,因为聊天屏幕已经在导航堆栈中。

对于这个问题(以及整个协调器模式)是否有一个巧妙的解决方案,而不存储对相应视图模型的引用?

标签: iosmvvmcoordinator-pattern

解决方案


您需要为此添加观察者。无需在视图模型中传递数据。

从任何地方调用观察者是 MVVM 传递数据的最佳模式


推荐阅读