【问题标题】:UIRefreshControl doesn't clear the tableviewUIRefreshControl 不清除表格视图
【发布时间】: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 代码会导致不可预知的行为。在获取数据后忘记调度异步是很常见的。

标签: swift uitableview uirefreshcontrol


【解决方案1】:

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

使用:-

self.tableView.refreshControl = yourRefreshControl

【讨论】:

  • 哦,是的,刚刚知道了。通过创建一个额外的变量来解决它。但是你的版本也可以。一开始不太明白它的概念。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-17
  • 1970-01-01
  • 2012-10-19
  • 2021-10-30
  • 2013-08-09
  • 1970-01-01
相关资源
最近更新 更多