作为菜鸟,维护着古老的MVC项目,之前一直知道MVVM框架,但都是简单的浏览对于它的各种定义、与MVC的各种区别、它的优势,简单的说,它就是为了将Controller解放出来。想想以前的代码,真•惨不忍睹,然后再看看ReactiveCocoa框架。。。。。
这一篇文章会简单的对我对于MVVM实现的方法以及思想进行阐述
项目目录这里以通讯录的列表为例(需求:实现树形分组的无限下拉,效果与上图一致 )
先梳理一下思路吧,用tableView 去实现,数据模型:增加节点字段:子节点,父节点,增加BOOL类型字段:记录它的展开状态,根据tableView的方法deleteRowsAtIndexPaths、insertRowsAtIndexPaths增加或者删除需要展示的子数组
这里进行了MVVM模式的初次试探
按照我对MVVM的理解,它是将View 与 Model 分开,在ViewModel中对这两个元素进行关联,因此有了Controller、Model、ViewModel、View文件夹。
我创建了MainTableViewModel.m文件来对首页的数据以及页面进行绑定
MainTableViewModel.h而在首页Controller中,我对tableView进行了初始化,似乎不在首页进行初始化,在handleWithTable: 方法中初始化是不能够成功设置tableView的
MainVC.m文件中的方法
MainVC.m这里代码量很少,主要操作都集中在MainTableViewModel中,其中getData方法就是在配置TableView的数据源,并且绑定在MainTableViewModel中,做完这些,就可以把操作都抛到MainTableViewModel.m中了,下面是造数据
其中的tableModel是MainTableViewModel,viewModel是封装的一个网络请求数据处理的入口(MainViewModel.h),不要问我为什么不把它并入mainTableViewModel中。其他的在Demo中看吧。
最后留个demo的地址吧
这里使用了Masnory、MJExtension、AFNetworking(这里我对它进行了简单的封装)、SDWebImage(这个似乎没有用到)第三方的框架,感谢。
网友评论