【问题标题】:Trying to add pull to refresh in Swift 4 but getting an error尝试在 Swift 4 中添加拉动刷新但出现错误
【发布时间】:2018-03-05 14:08:56
【问题描述】:

我需要帮助解决这个问题!我正在添加拉动以刷新我的表格视图。当我拉刷新时,我希望文章刷新。如果知道这一点的人会帮助我,那就太好了,如果还有其他问题。

Argument of '#selector' does not refer to an '@objc' method, property, or initializer

错误在这里:

refreshControl.addTarget(self, action: #selector(fetchArticles(fromSource: source)), for: .valueChanged)
    return refreshControl
}()

这里是函数fetchArticles

@objc func fetchArticles(fromSource provider: String){
    ...
}

【问题讨论】:

  • 格式似乎有问题。你能解决它吗?

标签: ios swift pull-to-refresh


【解决方案1】:

您必须添加另一个函数来刷新文章,因为您正在传递一个参数:

@objc func refreshArticles() {
    self.fetchArticles(fromSource: self.source))
}

像这样添加目标:

refreshControl.addTarget(self, action: #selector(refreshArticles), for: .valueChanged)

另外,不要错过给tableView添加refreshControl,如下:

tableView.addSubview(refreshControl)

更新 fetchArticles 完成后添加以下行,如下所示:

refreshControl.endRefreshing()

你使用的是session.dataTask,所以这个必须进去:

DispatchQueue.main.async {
    refreshControl.endRefreshing()
}

【讨论】:

  • 非常感谢!现在只能刷新一次,如何解决?
  • 请检查我回答的更新部分,之后您将能够再次刷新
  • 我添加了这个并且它成功了,谢谢:DispatchQueue.main.async { self.refresher.endRefreshing() }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-28
  • 1970-01-01
  • 2016-04-16
  • 1970-01-01
相关资源
最近更新 更多