Ответ 1
Благодаря Артему, я понял, что мне нужно вызвать reloadData() в основном потоке. Вот как я решил, что:
func refreshUI() {
dispatch_async(dispatch_get_main_queue(),{
self.stationTableView.reloadData()
});
}
У меня
class StationViewController :
UITableViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet var stationTableView: UITableView!
При обновлении данных в моем источнике данных и
stationTableView.reloadData()
это не сразу видно на экране. Если я прокручиваю, наклоняю или делаю что-нибудь еще, что заставляет перекрашивать экран, то отображаются обновленные ячейки. Я могу подтвердить, что UITableView выполнил обновление, вызвав
println("\(stationTableView.visibleCells())")
который печатает ожидаемые ячейки.
Остальная часть настройки - это UINavigationController
, у которой my StationViewController
в качестве отношения. IBOutlet для StationViewController
подключен к UITableView
в файле раскадровки.
Кажется, мне нужна "перекраска" экрана, чтобы мое обновление сразу стало видимым. Как это сделать?
Благодаря Артему, я понял, что мне нужно вызвать reloadData() в основном потоке. Вот как я решил, что:
func refreshUI() {
dispatch_async(dispatch_get_main_queue(),{
self.stationTableView.reloadData()
});
}