记录下自己对于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












网友评论