尝试在 Swift 4 中添加拉动刷新但出现错误

Trying to add pull to refresh in Swift 4 but getting an error

我需要帮助解决这个问题!我正在添加拉动以刷新我的 table 视图。当我拉动刷新时,我想要刷新文章。如果有知道这方面的人帮帮我就太好了,如果还有什么不对的地方。

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){
    ...
}

您必须添加另一个功能来刷新文章,因为您传递了一个参数:

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

并像这样添加目标:

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

另外,不要错过将 refreshControl 添加到 tableView,例如:

tableView.addSubview(refreshControl)

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

refreshControl.endRefreshing()

您正在使用 session.dataTask,因此必须将其放入:

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