MVVM模式的使用
最近项目都换成了MVVM的模式,这里说一下整的思路。
这个就是MVVM,把控制器剥离出来,减轻控制器的负担,简化代码提高代码质量,是这种模式的主要作用。
流程:
1.一个模块创建一个ViewModel,viewModel贯穿VC和View,是他们之间沟通的桥梁。
这是ViewModel的.h,是创建信号的,信号分两种,Command一般用于接口调用,Subject用于事件传递。在.m里面写你接口的解析,参数之类的。
2.创建控制器,控制器要初始化你的ViewModel。
3.创建View视图,View里面要把基本上所有的操作都完成,除了非得用控制器的代码可以写在VC中,比如页面跳转,其他的都要写在View里面。像UITableView的代理和视图创建都写在view里面。
4.信号传递,例如:[self.viewModel.twpRefreshCommand execute:nil];这是调取刷新接口的信号,执行此操作,ViewModel里面的刷新的信号会再次调用一次,也就是刷新一次。
[self.twpOrderToBuyClickSubject sendNext:self.detailModel];这个是事件传递的信号,发出这个信号,需要在另一个地方接受事件,像代理一样和Block一样,好处是不用写很多代码,View和VC都可以互相传递,(功能类型通知,但不用担心没有移除通知)。可以传递参数,sendNext:(这里面写参数哦)。
//接受信号
[self.viewModel.twpOrderToBuyClickSubject subscribeNext:^(TWCOrderDetailModel *detailModel) {
@strongify(self);
这里面写事件的处理
}];
注意:VC和view要共用一个ViewModel,viewModel在VC中创建,传递到view中。后续继续更新。