试图在Swift 4中添加pull来刷新但是出错了

时间:2018-03-05 14:08:57

标签: ios swift pull-to-refresh

我需要帮助解决这个问题!我正在添加pull来刷新我的表视图。当我拉动刷新时,我希望文章能够刷新。如果知道这一点的人会帮助我会很棒,如果还有其他错误的话。

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

1 个答案:

答案 0 :(得分:0)

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

@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()
}