大概是项目里太多的分页加载数据,所以一个简单、快捷、高效分页加载会使你那么的愉悦.
大概就是这么丝滑
github链接:JSLoadMoreService
用法讲解
属性预览
NSObject+LoadMoreService.h
UITableView+Preload.h
|
|
如何调用
建一个viewModel类
这里处理数据的逻辑,所以写了方法
VC调用:
整个方法:
|
|
tableview里调用预加载
绘制cell代理里调用,根据你的需求是row or section
|
|
配置tableview的上拉刷新和预加载:
|
|
至此,流程就done了
内部方法实现步骤
NSObject+LoadMoreService.m
先用runtime associate property
|
|
分页请求的base Method,
需要你配置的地方都有warning标识着:
|
|
此方法统一处理一些操作,比如:刷新remove,转model数组,记录是否加载完,记录当前请求的indexpath数组(为了是能调用insertRowsAtIndexPath:或者是insertSections:,而不用reloadData)
|
|
判断是否满足预加载的条件:
|
|
获取当前分页的所得indexpaths数组:
|
|
UITableView+Preload.m
给tableview扩展些属性以及方法
统一给tableview设置头部刷新
|
|
结束刷新
|
|
判断当前index是否可以出发预加载
|
|
是否达到预加载的条件
|
|
注
依赖的三方库有:AFNetworking、ReactiveObjC、YYModel、MJRefresh
结
其实思路很简单,runtime扩展所需要的属性和方法,然后有机的结合调用,如果你真的看懂了,其实真的很方便,当然如果你有更好的建议都可以github issue我,共同学习共同进步~