ios - 在 iOS 上以 MVVM-C 模式将数据传递给现有视图模型
问题描述
我正在开发一个使用Coordinator
andMVVM
模式的应用程序。
协调器协议如下所示:
protocol Coordinator: class {
func start()
func start(with deeplink: DeeplinkOption?)
}
该start
方法具有启动当前协调器流程的逻辑,例如创建相应的初始视图控制器、视图模型等。
我尝试通过该方法向Coordinator
协议添加深度链接处理。start(with deeplink: DeeplinkOption?)
问题是我需要将深层链接数据传递给特定协调器中已经存在的视图模型,并且该协调器不持有对目标视图模型的引用。例如想象以下堆栈:
应用协调器
聊天协调员
- 聊天画面
- 用户详细信息屏幕
用户当前在用户详细信息屏幕上,我需要将深层链接操作传递给聊天屏幕视图模型。也没有理由从头开始重新创建聊天屏幕,因为它已在start
方法中完成,因为聊天屏幕已经在导航堆栈中。
对于这个问题(以及整个协调器模式)是否有一个巧妙的解决方案,而不存储对相应视图模型的引用?
解决方案
您需要为此添加观察者。无需在视图模型中传递数据。
从任何地方调用观察者是 MVVM 传递数据的最佳模式
推荐阅读
- r - Thom 在 R 中的每月成长天数
- scala - sbt / native-packager, new jdeps error: java.lang.module.FindException: Module java.activation not found, required by java.xml.bind
- javascript - 在 ASP.Net Core 中使用 Signal R 时,如何在 javascript 中的表中添加单行?
- r - 在 r 中使用 quantile() 来查找值
- logging - 将 Strapi 日志保存到日志文件的好方法?
- go - 如何使用通用 Go 实例化一个新的类型参数指针?
- java - Java Selenium InvalidArgumentException:无法识别的选项 moz:debuggerAddress
- php - 使用 codeigniter 上传文件失败
- c++ - 如果 constexpr,你可以替换 enable_if 来禁用它吗?
- python - pygame.error:库未初始化,虽然已经初始化