之前项目一直用的MVC框架,到这家公司以后因为项目业务比较繁重,各种页面状态,效果比较多,数据量也比较大,公司就要求用MVVM框架。临时抱佛脚学了好久,跟着公司前辈适应了一下,也算是把项目做完了。现在想总结一下自己对于这个模式的认知
比如这个例子。sectionHeadView上面有三个按钮,对应不同的活动。点击的时候区头字体颜色改变,刷新下面单元格,出现新的产品。首页我们要分清各模块的职责。
1.M层建立区头sectionHeadView和cell两个数据模型,然后使用MJExtenSion解析。
2.V层创建视图层,我们可以创建一个继承与uiview的mainTabView,区头可以用colllectionView写出来,如果活动多的话增加左右滑动的功能也比较方便,cell这里自定义单元格就不必说了。
3.viewMode层做的事情比较多(1)首先呢就是网络请求,获取数据。(2)对于view层视图显示的管理,ViewModel需要和View进行通信时,根据获取的数据确定何时隐藏或显示信息 (3)日期和数字等的格式化处理 (4)数据的本地化处理 可以总结为展示层逻辑(viewmodel中切不可存在view对象,更不该出现push或者present代码)
4。然后就回到VC了,有了viewMode,VC层就接触不到model层了。主要也就是(1)页面的布局 (2)动画效果的展示 (3)页面UI的加载展示,同事将viewmode的数据传输给V层。
即viewmodel的数据随着view自动刷新,并且同步到model里去,ViewModel就是View与Model的连接器,View与Model通过ViewModel实现双向绑定。也就是将viewModel中的方法在VC中实现对View的页面数据显示和布局刷新
View层的初始化方法也可以这样写,获取到数据模型以后开始页面的布局展示
在VC懒加载里面即进行了Viewmode与View数据的传值交互。这样就极大的简化了VC里面的代码,分离了代码层,更利于解读与维护
不过前面说的ViewModel作为View与Model的连接器,View与Model通过ViewModel实现双向绑定,是需要RAC技术作为支持的,才能更方便的实现。
网友评论