国际惯例,看看效果图
gif比较必须小于3m,没办法上传更高清的gif了,手机上面跑是很流畅的。
商品列表增加下拉刷新
我们在上一篇中做好了商品的加载。但是还没有刷新功能,和拉到底部,加载更多数据的功能。
现在我们就开始。
我在网上找的了一个刷新的工具。
pod "ESPullToRefresh"
//切换到项目根目录中。执行下面的命令
pod install
//关闭xcode,然后重新打开之前的项目,就把项目导入成功了。
如何使用呢
//先导入
import ESPullToRefresh
//设置刷新的代{过}{滤}理
//设置刷新es工具
uiTable.es.addPullToRefresh {
print("refresh??")
self.currentPage = 1
//下拉刷新的时候,我们获取第一页的数据
self.getData(page: self.currentPage)
}
uiTable.es.addInfiniteScrolling {
print("load more")
self.getData(page: self.currentPage)
}
刷新的时候,我们获取第一页数据。
数据获取完成的时候,页面+1
拉到底部的时候,会加载更多数据。这个时候就直接获取就行了。
处理加载完成
func getData(page: Int) {
//获取数据
Alamofire.request(UnionApi.getPreferentialUrl(page: page))
.responseObject { (response: DataResponse<PreferentialBean>) in
//获取数据成功
let result = response.result.value
print("获取的数据page:\(page)")
//print(result?.data?.tbkDgOptimusMaterialResponse?.resultList?.mapData?.count)
//设置到数组中
if let arr = result?.data?.tbkDgOptimusMaterialResponse?.resultList?.mapData {
if page == 1{
//清空全部数据
self.preferentialList.removeAll()
self.preferentialList = arr
//停止下拉刷新
self.uiTable.es.stopPullToRefresh()
} else{
//不是第一页的时候,我们需要把获取到的数据,加入到之前的数组中
self.preferentialList += arr
self.uiTable.es.stopLoadingMore()
}
self.currentPage += 1
//刷新列表
self.uiTable.reloadData()
} else {
//返回的数据是空的,那就没有数据了
self.uiTable.es.noticeNoMoreData()
}
}
}
这样我们就完成了下拉与上拉的功能了。
计划
页面没有数据的时候,增加提示
代码地址:
https://github.com/cat13954/IOSUiTableViewSample
|