1、MVVM:Model + View + ViewModel ,当然Controller 是不能少的,而在这个设计模式中Controller 的作用就是一个”空壳”,负责将 Model 、 View、 ViewModel 关联起来,搭建成MVVM设计模式。
如下图:
2、MVVM 设计模式重要的一点就是搭建成一个数据的"双向绑定"
A:ViewModel 与 View 的绑定
这里使用Facebook封装的第三方框架:KVOControl,进行数据绑定
Github地址:https://github.com/facebook/KVOController
B:ViewModel 与 Model 的绑定
3、View 与 ViewModel 的传值方式
MVVM 与 MVC 不同的一点 View与控制中心的传值交互方式不同,MVC 更多是使用 协议的方式,将View的值传递给Control。
在MVVM中View是拥有控制中心ViewControl 的,使用可以直接调用ViewControl的方法进行传值等操作,不需要协议等方式
完整DEMO
===================== 案列分享 =====================
1、MVVM的典型例子:个人中心(这个只是一个MVC模式,并不是MVVM设计模式)
http://www.jianshu.com/p/81d0c573f7a8
结论:1、Model 是相对于View的内容创建的
2、Model 填充 View 并且 View 根据 Model 的数据决定展示的样式
2、MVVM 功能的划分
http://www.jianshu.com/p/865cb28c5794
结论: 1、ViewModel 是负责定义View要显示的内容结构
2、ViewController 即是View也是Controller
3、ViewModel 是负责业务、数据转换
4、Model 是数据模型,也负责网络的请求
5、KVO的使用:当数据有更新时,刷新UI
6、MVVM 方便业务的扩展
7、ViewModel对Controller没有依赖,能很好的移植
3、MVVM的好处:
https://www.objccn.io/issue-13-1/
1、代码的测试变得更简单
2、ViewControl 的变得更轻量
3、可以使用ReactiveCocoa绑定
4、MVVM + RAC
http://www.cocoachina.com/ios/20170213/18659.html?=787782089