[英]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.