2016-06-08 4 views
-1

Я хочу обновить объект модели до загрузки моего основного контроллера. В настоящее время код для обновления представлений выполняется до того, как моя модель получит данные с сервера, поэтому в главном представлении отображаются неверные данные.Как задержать viewDidLoad() до ответа сервера?

Я использую PubNub. В appdelegate установлен слушатель, который запускается при получении данных.

+1

Вам необходимо реализовать что-то вроде 'updateData' для загрузки из бэкэнд и перезагрузить свой' viewController' с помощью некоторого индикатора загрузки. Неправильная практика держится на чем-либо в вашем основном потоке, ожидая ответа сервера. –

+3

Вы не хотите задержать 'viewDidLoad' по любой причине. Это плохой UX, и если это произойдет не в то время, процесс часовой собаки может убить ваше приложение (0x8badf00d; lol). Вместо этого вы должны показать, что ваше приложение показывает последние известные данные и/или некоторое представление затемнения и/или 'UIActivityIndicatorView', чтобы пользователь знал, что больше данных поступает. – Rob

ответ

2

Никогда не задерживайте viewDidLoad() - вам нужно иметь пустой/загрузочный экран для отображения, когда нет данных для представления. Как только эти данные поступят - вызовите функцию обновления, чтобы отобразить ее.

+1

Я согласен с Cesar. Попытка задержать viewDidLoad - это плохое mojo, и, скорее всего, ваше приложение будет прекращено, так как система будет думать, что он был повешен. Вам нужно отобразить SOMETHING, пока вы ждете на сервере. Плавающий просмотр «загрузка, пожалуйста, подождите» с индикатором активности является одной из возможностей. –