У меня есть UITableViewController, встроенный в контроллер навигации. Моя кнопка RightBarButtonItem - кнопка обновления. При нажатии кнопка запускает обновление с сервера. Обновление является синхронным (когда у меня есть время, я изменю его на асинхронный запрос). То, что я хочу сделать, звучит просто теоретически. После того, как нажата кнопка:UINavigationBar не обновляет элемент панели бара до тех пор, пока обновление таблицы не появится
- Изменить панель кнопок пункт к UIActivityIndicatorView
- Обновить данные
- Перезагрузите Tableview
- Изменение бар кнопки элемент обратно на кнопку обновления.
То, что происходит, однако, заключается в том, что я буду установить rightBarButton на вид с точки зрения индикатора активности, но он никогда не получает обновленный до после на вид перезагружается стол, что, очевидно, бессмысленно. Моя процедура обновления сервера выглядит так:
- View Controller вызывает метод «обновления» отдельного объекта модели.
- объект модели синхронно получает новые данные с сервера
- Просмотреть вызовы контроллеров [self.tableView reloadData];
Поскольку это синхронно, я думал, что он просто прогрессирует на один шаг за раз, но это не работает. Как я могу сделать это так, чтобы ActivityIndicatorView показывал и исчезал, когда он должен был?
Этого можно ожидать от синхронного запроса, он заблокирует ваш основной поток. – duci9y
Именно поэтому я смущен. Вещи происходят не по порядку, но они не должны быть, если они синхронны. – Halen
Возможно, у вас есть код, который вышел из строя. Не ждите, когда вы измените навигационную панель, обновления будут отмечены, но не будут применяться до следующего цикла перерисовки экрана. Но вы блокируете основной поток, а основной поток - это когда пользовательский интерфейс нарисован. Следовательно, нет обновления экрана и обновлений панели навигации. – duci9y