В моем TableViewController у меня есть функция @objc, которая извлекает данные, используя Alamofire .Функция вызывается refreshController, когда пользователь нажимает на кнопку, чтобы запустить обновление по запросу.
Обновление по запросу объявляется так:
let refreshControl = UIRefreshControl()
tableView.refreshControl = refreshControl
self.refreshControl!.addTarget(self, action: #selector(refresh(sender:)), for: .valueChanged)
И функция, которую он запускает:
@objc func refresh(sender:AnyObject) {
let defaults = UserDefaults.standard
if let mode = defaults.string(forKey: defaultsKeys.mode) {
self.mode = mode
}
self.tableData.removeAll()
print(mode)
Alamofire.request(mode).response { response in
let xml = SWXMLHash.config {
config in
config.shouldProcessLazily = true
}.parse(response.data!)
for elem in xml["rss"]["channel"]["item"].all {
self.tableData.append(elem["title"].element!.text)
}
print("Completed Data Gather")
self.mainTable?.reloadData()
self.refreshControl!.endRefreshing()
}
}
Проблема возникает, когда я пытаюсь вызвать функцию автоматического обновления по запросу, используя
self.refreshControl!.beginRefreshing()
self.refreshControl!.sendActions(for: .valueChanged)
Функция выполняется (как это наблюдается в консоли из-за операторов печати), и данные извлекаются,но tableView отказывается обновлять.Я знаю, что данные извлекаются правильно, потому что в следующий раз, когда пользователь вручную извлекает обновления tableView с новыми данными.
TL; DR Мой tableView правильно перезагружается, когда пользователь вручную вытягивает обновления,но не тогда, когда обновление по запросу вызывается программно с помощью.