ZMDemo框架图
项目结构
ZMDemo为方便扩展所以写的比较简单,层次结构明显, 适合萌新来学习项目框架的搭建, 也适用于中小型应用的开发。
工程结构
pod 导入的第三方
使用方法及原理
控制器界面 无非就是请求数据,保存数据以及显示数据。
首先是请求数据:根据不同的界面请求不同的API,传不同的参数,后台就能返回不同的参数,所以你的控制器里就只需要重写父类的请求数据的方法(只是简单的显示数据而已),就能实现整个功能。
就只要写一个方法,一个方法~~
每个控制器会对应一个ZMModel对象,在控制器里传参数,Model类方法里会提供这个界面的API
然后就是保存数据:Model类方法将请求后的数据转成相应的模型,并保存在数组里,通过block将结果回调到控制器里。
保存数据
最后就是显示数据:基类里提供一个通过数组刷新页面的方法,只要将回调的结果传入这个方法,即可刷新页面。
显示数据 tableView或者是CollcetionView reloadData
cell(拿TableViewCell来举例)里的内容都是根据模型来显示的,想要在基类里实现TableView的代理方法就需要为UITableViewCell增加类别,让所有的TableViewCell都有填充数据的方法(也可用协议来实现)。
paddingData
基类实现TableView的代理方法
补充说明
1.界面元素的增删改操作:(拿TableView来举例)
创建的Cell继承自ZMTableViewCell,会有增删改的代理方法,设置代理的方法见上面红线
ZMTableViewCell及代理方法
cell里 删除按钮的点击事件
删除数据,刷新界面
附效果图一张,整个实现控制器中也不过50行代码!! 不过50行!!
删除操作
2.复杂界面的实现:图文类似微博,朋友圈实现;
实现可参考ZMDemo 中 ZMDynamicController文件, 控制器70行代码,不能再多了。
复杂界面的实现
3. 基类ZMViewController 回调block的介绍
在修改下个界面的内容后,上个界面也要求随之改动 就可以用到回调block
回调介绍
举个例子: 动态列表 -> 动态详情 -> 收藏动态 -> 返回刷新动态列表中该动态的状态。
效果图
以下是实现代码
设置回调(这里是带参回调,如果是刷新整个页面可用 refresh 来回调)
触发回调