Выберите RootViewController в AppDelegate после асинхронного запроса

StackOverflow https://stackoverflow.com//questions/24036554

Вопрос

Я пытаюсь объяснить мою проблему.В AppDelegate я должен выбрать rootViewController в зависимости от результата асинхронного запроса (я использую AfnetWorking Framework).На самом деле, мне нужно знать, если мой пользователь профилирован или нет: если он профилирован, я могу показать ему домой приложения, если он не должен показать ему представление о профилировании.

в раскадровке Я устанавливаю вид домой как указанную точку входа, но таким образом, этот вид всегда отображается до тех пор, пока асинхронный запрос не будет завершен.Есть ли способ сделать AppDelegate ждать ответа?

Это было полезно?

Решение

Я думаю, что не имеется хорошего решения, чтобы позволить делегату приложения ждать ответа, потому что если сетевое соединение будет плохое время загрузки приложения будет очень долго, а ОС может убить ваше приложение или пользователь может выключить его.

.

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

Другие советы

Лучшее решение - использовать Splash Screens.То есть когда ваше приложение загружается в AppDelegate, создайте и нажимайте контроллер вид на всплеск.Что просто будет содержать один UiimageView, покрывающий целый экран, показывающий ваше изображение в брызг.После завершения асинхронного вызова высказывайте этот контроллер просмотра SPLASH и нажмите необходимый контроллер просмотра.

Многие приложения используют этот способ для загрузки необходимых асинхронных данных, прежде чем показывать приложение.Так что пользователь не видит пустые экраны или данные мусора.

Если что-то не удалось, например, сбой подключения к Интернету или ошибка отклика сервера и т. Д., Показать ошибку пользователю и выполнить обработку ошибок в соответствии с логикой приложения.

Вы можете программически перейти к контроллеру корневого просмотра, как

[self.navigationController popToRootViewControllerAnimated:YES];
.

Этот код может быть помещен в условие результата.

Или на пути, я думаю, вы созданы навигации по навигации в RootViewController.Вы можете программически выполнять Segue, используя

- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender
.

Если вы используете AfnetWorking, просто добавьте метод в блоке успеха и передайте ответ на этот метод в параметре словаря.Проверьте свой ответ в методе и выберите контроллер, который вы хотите сделать, сделать контроллер Root View от этого метода.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top