记录下自己对于mvvm
的理解,由于网上一堆关于mvvm
的定义不在赘述,只记录自己在项目使用的理解和使用方式
1:在每个模块中,创建四个文件夹,分别为Controller
Model
View
和 ViewModel
,结构如下图
支付历史记录模块
支付历史记录模块
2:controller
毫无疑问在这里放相关的控制器,在控制器中实现对视图的管理, 包括 控制器生命周期的管理, 导航控制器的设置, 子视图的初始化, 子视图的各种事件处理和页面跳转等和view操作相关的处理,但不要添加对业务逻辑的处理,结构如下图所示,其中刷新表格并没有在controller
本身去进去网络请求,而是从viewModel
中获取网络请求的数据,然后在刷新展示表
controller方法结构
3:viewModel
在这里处理 业务逻辑, 包括数据的刷新, 各种代理方法的实现, 子视图的数据绑定等操作. 然后通过block
方式通知controller
子视图的响应事件,让controller
去做相应的页面处理(PS:页面跳转), 这里不建议使用通知去主动通知controller
,而应该用block
等待controller
根据需要主动去viewModel
获取,毕竟viewModel
是为了给controller
提供方便,并不清楚controller
在什么时机需要什么样的数据. viewModel
结构图如下:
viewModel.h
viewModel.m