Swift5开发iOS应用如何实现UITableView下拉刷新列表内容功能
Swift5 实现UITableView下拉刷新方案
你需要的顶部下拉刷新功能可以直接使用iOS系统自带的UIRefreshControl实现,无需额外引入第三方库,具体操作步骤如下:
步骤1:在页面初始化时配置刷新控件
在HomeVC的viewDidLoad生命周期方法中添加如下代码,将刷新控件绑定到你的UITableView上:
// 初始化下拉刷新控件 let refreshControl = UIRefreshControl() // 绑定下拉触发的刷新方法 refreshControl.addTarget(self, action: #selector(pullToRefreshLatestOrders), for: .valueChanged) // 绑定到tableView,系统会自动处理滑动到顶部下拉的触发逻辑 self.tableView.refreshControl = refreshControl
步骤2:实现刷新逻辑方法
编写下拉触发的刷新方法,对接你的web service拉取逻辑,注意处理数据源重置和刷新状态的关闭:
@objc func pullToRefreshLatestOrders() { // 如果你有上拉加载的分页参数,这里必须重置为第一页,避免后续上拉加载数据重复 // self.currentPage = 1 // 调用你已有的拉取订单数据的接口方法 requestOrderListAPI { [weak self] latestOrderList in guard let self = self else { return } // 切换到主线程执行UI操作 DispatchQueue.main.async { // 用最新拉取的全量数据替换原有数据源,不要做累加 self.arrListAll = latestOrderList // 刷新列表 self.tableView.reloadData() // 关闭刷新状态,停止加载动画 self.refreshControl?.endRefreshing() } } failure: { [weak self] error in guard let self = self else { return } DispatchQueue.main.async { // 接口请求失败也必须关闭刷新状态,避免一直显示加载动画 self.refreshControl?.endRefreshing() // 此处可添加你的错误提示逻辑,比如弹出toast提示网络错误 } } }
适配说明
如果你是按tab展示不同状态的订单,刷新时需要同步更新arrListPending、arrListProcess等分类数组,再执行列表刷新即可。
内容的提问来源于stack exchange,提问作者bircastri
相关产品推荐
相关产品推荐

