UIRefreshControl 不清除表格视图

Posted

技术标签:

【中文标题】UIRefreshControl 不清除表格视图【英文标题】:UIRefreshControl doesn't clear the tableview 【发布时间】:2017-06-30 15:51:30 【问题描述】:

我正在尝试设置拉动刷新功能。刷新工作正常。 我按以下方式设置了 refreshControl:

let refreshControlAnimation = UIRefreshControl()
self.refreshControl?.addTarget(refreshControlAnimation, action: #selector(handleRefresh(refreshControl:)), for: UIControlEvents.valueChanged)
self.tableView?.addSubview(refreshControlAnimation)

我设置了一个目标并通过拉取执行handleRefresh函数。

  func handleRefresh(refreshControl: UIRefreshControl) 
        DataController().fetchDataLive(mode: "get", completionHandler:  success in
            self.tableView.reloadData()
            refreshControl.endRefreshing()
        )

    

但是,如果我拉动刷新动画会执行,但它并没有在它应该结束的时间结束。正如您在图片上看到的,动画仍在节标题下执行。

但它应该尽快清除,就像这张图片一样。

为什么没有早点调用我的 endRefreshing 函数?

【问题讨论】:

你使用 UITableViewController 吗? 是的,我使用 TableViewController 你执行主队列中的代码吗? @GaétanZ 我正在考虑这个问题。所以你的意思是它有可能重新加载表格视图以快速? 其实我不是很理解你的问题。但是不在主队列上执行 UI 代码会导致不可预知的行为。在获取数据后忘记调度异步是很常见的。 【参考方案1】:

有你的问题。刷新控件不应该作为子视图添加,因为 swift 已经做了将其添加到 tableview/tableviewcontrollers 的规定。

使用:-

self.tableView.refreshControl = yourRefreshControl

【讨论】:

哦,是的,刚刚知道了。通过创建一个额外的变量来解决它。但是你的版本也可以。一开始不太明白它的概念。

以上是关于UIRefreshControl 不清除表格视图的主要内容,如果未能解决你的问题,请参考以下文章

UIRefreshControl 刷新后不隐藏。 iOS

iOS UIRefreshControl 在单视图应用程序中,没有表

类似于 UIRefreshControl 将隐藏的 UIView 添加到 UITableView

与单元格一起移动的 TableView 上的 UIRefreshControl

拖动时删除 UITableView 和 UIRefreshControl 之间的空白

没有 UITableViewController 的 UIRefreshControl 不调用选择器