Я программно создал UITableView, который заполняется данными, которые я получаю из API. Когда я получаю данные асинхронно, я пытаюсь обновить свое табличное представление, но оно не обновляется.
Сначала я создаю UITableView в моем UIViewController. Данные, которые я пытаюсь загрузить, загружаются правильно, они появляются только после загрузки начального представления. Когда я пытаюсь обновить sh мои данные, выполнив reloadData (), ничего не происходит.
Чего мне не хватает? Спасибо!
Создание моего контроллера:
class SpotifyTableViewController: UIViewController, UITableViewDelegate {
//table view programmatically added
let tableView = UITableView()
var safeArea: UILayoutGuide!
var playlists = [PlaylistItem]()
@objc func handleRefreshControl() {
// Update your content…
tableView.reloadData()
// Dismiss the refresh control.
DispatchQueue.main.async {
self.tableView.refreshControl?.endRefreshing()
}
}
Моя функция viewDidLoad ()
переопределение удовольствия c viewDidLoad () {
super.viewDidLoad()
view.backgroundColor = .white
let refreshControl = UIRefreshControl()
tableView.refreshControl?.addTarget(tableView, action:
#selector(handleRefreshControl),
for: .valueChanged)
tableView.refreshControl = refreshControl
self.loadPlaylists(accessToken:
setupTableView()
}
Настройка таблица:
func setupTableView() {
view.addSubview(tableView)
tableView.delegate = self
tableView.dataSource = self
}
func loadPlaylists(accessToken: String) {
.... make API call and retrieve data
let task = session.dataTask(with: url, completionHandler: { data, response, error in
DispatchQueue.main.async {
// update UI
...
}
}
DispatchQueue.main.async{
self.tableView.reloadData()
}
return
}
}
})
task.resume()
self.tableView.performSelector(onMainThread: Selector("reloadData"), with: nil, waitUntilDone: true)
}
}