[英]Passing data to an existing view model in MVVM-C pattern on iOS
我正在开发一个使用Coordinator
和MVVM
模式的应用程序。
协调器协议如下所示:
protocol Coordinator: class {
func start()
func start(with deeplink: DeeplinkOption?)
}
start
方法具有启动当前协调器流的逻辑,例如创建相应的初始视图 controller、视图 model 等。
我尝试通过start(with deeplink: DeeplinkOption?)
方法向Coordinator
协议添加深度链接处理。 问题是我需要将深层链接数据传递给特定协调器中已经存在的视图 model,并且该协调器不持有对目标视图 model 的引用。 例如想象以下堆栈:
应用协调器
聊天协调员
用户当前在用户详细信息屏幕上,我需要将深层链接操作传递给聊天屏幕视图 model。 也没有理由从头开始重新创建聊天屏幕,因为它是在start
方法中完成的,因为聊天屏幕已经在导航堆栈中。
是否有针对此问题(以及整体协调器模式)的简洁解决方案,而不存储对相应视图 model 的引用?
除了通过协调器将数据传递到视图 model 之外,您还可以在要传递数据的相应视图 model 中添加观察者。 观察者将监听数据,一旦你从任何地方调用观察者,数据就会被传递。
总的来说,通过观察者模式可以实现这一点。
您需要为此添加观察者。无需在视图 model 中传递数据。
从任何地方调用观察者是 MVVM 传递数据的最佳模式
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.