You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 12:57:02