将数据传回 MVVM
Posted
技术标签:
【中文标题】将数据传回 MVVM【英文标题】:Pass Data Back in MVVM 【发布时间】:2015-11-27 20:27:23 【问题描述】:我尝试在 CoreLocation/MapKit 项目中实现 MVVM。我的主视图控制器仅从其他类(视图模型)派生数据并显示它们。在视图控制器中没有进行任何思考。
CoreLocation 和 MapKit 委托方法都在单独的类中完成,它们在应用启动时将数据传递给视图控制器。
应用启动后,模型类会在用户启动流程时准备要在地图上绘制的路径。即使成功确定了路径,也不会绘制路径,因为我无法将数据从模型传递回视图模型(MapKit 类)。
即使我可以传递数据,视图控制器在应用启动时已经创建了地图视图,现在它需要重新绘制它。
那么如何将数据从模型传回视图模型并重绘我的地图视图?
附:我选择的编码是 Swift
【问题讨论】:
您可以在视图模型中使用委托或 NSNotification,但 IMO MVVM 模式在 ios 上并不真正适用,因为没有 UIBinding。 MVVM 在有 UIBinding 框架的 Windows 中很流行。 @Paulw11 猜你是对的。我开始有同样的感觉。 MVVM 在 iOS 上并不真正适用。谢谢你让我清醒。你也考虑写你的评论作为答案吗? 【参考方案1】:您可以使用委托模式来通知委托类模型已更改,也可以使用NSNotification
。如果多个观察者需要了解更新,后者会更好。
然而,在我看来,MVVM 模式在 iOS 上并不真正适用,因为它不支持 UI 数据绑定,所以 View-Model 并没有真正为您带来任何好处,只是增加了复杂性。 MVVM 起源于有 UI 数据绑定框架的 Windows 世界。
【讨论】:
以上是关于将数据传回 MVVM的主要内容,如果未能解决你的问题,请参考以下文章
将一些数据传回 RootViewController iOS 7
将数据从 detailViewController 传回 UITableView