Попытка добавить pull для обновления в Swift 4, но получаю ошибку

Мне нужна помощь в решении этой проблемы! Я добавляю тягу, чтобы обновить мой вид таблицы. Когда я потяну, чтобы обновить, я хочу, чтобы статьи обновились. Если бы кто-то, кто знает это, помог бы мне, был бы великолепен, и если есть что-то еще, также неправильное.

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 ответ

Решение

Вы должны добавить еще одну функцию для обновления статей, потому что вы передаете параметр:

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

И добавить цель так:

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

Кроме того, не пропустите добавить refreshControl в tableView, как таковой:

tableView.addSubview(refreshControl)

Обновить Добавьте следующую строку после завершения fetchArticle, как таковой:

refreshControl.endRefreshing()

Ты используешь session.dataTask так что это должно идти внутрь:

DispatchQueue.main.async {
    refreshControl.endRefreshing()
}
Другие вопросы по тегам