如何在进入视图控制器时自动刷新table view 无需手动下拉操作
实现进入页面自动触发UITableView刷新的方案
你可以通过在页面生命周期回调中手动触发刷新逻辑实现需求,具体修改如下:
步骤1:添加页面出现时的触发逻辑
viewDidLoad仅会在页面首次加载时执行一次,如果你需要每次进入页面都触发刷新,要使用viewWillAppear或viewDidAppear回调,新增代码如下:
override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) // 显示刷新指示器 refreshControl.beginRefreshing() // 手动调用刷新方法 handleRefreshControl() }
如果你仅需要页面首次加载时自动刷新一次,后续从其他页面返回该页面不需要重复刷新,可以新增标记位控制:
// 类内定义标记位 private var isFirstAppear = true override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) guard isFirstAppear else { return } refreshControl.beginRefreshing() handleRefreshControl() isFirstAppear = false }
步骤2:补充刷新结束逻辑
注意UIRefreshControl的beginRefreshing()方法仅会展示刷新指示器,不会自动结束刷新状态,请确保你的updateCommentsOverview方法异步请求完成后,无论请求成功或失败都调用结束刷新的方法,否则刷新指示器会一直显示:
func updateCommentsOverview() { // 你的网络请求/数据更新逻辑 yourNetworkRequest { [weak self] result in // 数据更新完成后刷新表格 self?.tableView.reloadData() // 结束刷新状态 self?.refreshControl.endRefreshing() } }
内容的提问来源于stack exchange,提问作者user9650660
相关产品推荐
相关产品推荐

