В моем приложении у меня есть логин, и если вход успешно завершен, пользователь получает идентификатор сеанса. Когда сеанс пользователя истекает, и они запрашивают страницу с истекшим сеансом, бэкэнд сообщает, что срок действия сеанса и пользователь должен войти в систему, а приложение вызывает popToRootViewControllerAnimated
(страница входа). Я использую класс NSURLConnection
для планирования обратных вызовов для моего UIViewController
, когда загрузка завершена. Проблема, с которой я сталкиваюсь, заключается в том, что я планирую NSURLConnection
во время моего viewDidLoad
и отчеты о подключении перед представлением контроллера представления. Я бы поставил NSURLConnection
в viewDidAppear
, но я не хочу обращаться к серверу каждый раз, когда появляется представление. Кто-нибудь знает, как лучше всего решить эту проблему?iPhone Popping View Controller перед ViewDidAppear
ответ
Во-первых, объявить переменную перечислимую:
typedef enum {
StatusLoggedOut,
StatusAttemptingLogin,
StatusLoggedIn
} LoginStatus;
Затем добавьте переменную-член в ваш контроллер представления для сохранения состояния входа. Затем, внутри viewDidAppear: вы можете сделать это:
- (void)viewDidAppear:(BOOL)animated
{
if (loginStatus == StatusLoggedOut) {
loginStatus = StatusAttemptingLogin;
// start the NSURLConnection
}
}
Когда Войти завершается, вы можете переключить статус StatusLoggedIn или StatusLoggedOut (в зависимости от того, как оказалось).
Вы можете избавиться от простого BOOL, но опыт научил меня, что лучше представлять все промежуточные состояния.
Кроме того, вы не спрашивали об этом, но я думаю, что было бы намного лучше, если бы вы представили экран входа в систему как модальный вид; использование popToRootViewController
приведет к тому, что пользователь потеряет свое место в вашем приложении, что раздражает. (Если вы не сохраняете и не восстанавливаете его, в этом случае вы делаете много работы для себя.)
- 1. PopViewController not popping view
- 2. IPhone - Какие методы View Controller использовать
- 3. iOS viewDidAppear вызван перед представлением
- 4. Результатов Popping View Controller в Одде navigationItem/backBarButtonItem Название Обмена
- 5. Popping View Controller заставляет элемент бара Item исчезать
- 6. Popping View Controller, если не используется контроллер навигации?
- 7. viewDidAppear вызывается перед applicationDidBecomeActive
- 8. Popping out Backbone View
- 9. Popping to root navigation controller - Swift 3
- 10. viewDidAppear вызывается перед didFinishLaunchingWithOptions
- 11. Modal view controller
- 12. iphone view controller class - как до
- 13. iPhone Modal View Controller отдельно в ViewController
- 14. iPhone View Controller проблемы с пейзажем/портретированием
- 15. View popping up/shaded/embosed from another view
- 16. Запуск View Controller из «вложенной» View Controller
- 17. Войти View Controller над модальной View Controller
- 18. Перезагрузка iOS View Controller
- 19. iphone ViewDidAppear в SubViews?
- 20. Навигационный контроллер не Нажимать/Popping View Controllers
- 21. Navigation Controller и View Controller
- 22. iphone UINavigation Controller
- 23. Как сжать MPMoviePlayer Controller view
- 24. Модель View Controller + файлы nib
- 25. View Controller не полный экран
- 26. Popping View crashes Приложение в [super dealloc]
- 27. iPhone EXC_BAD_ACCESS после события viewDidAppear
- 28. Настоящий Modal View Controller изнутри Popover View
- 29. Xcode 6 change View Controller
- 30. После отклонения Modal View Controller
+1 очень хорошее предложение относительно модального контроллера для входа в систему. – InsertWittyName