У меня есть приложение Swift, и я бы хотел, чтобы каждый раз, когда приложение становится активным, я хотел бы проверить пользователя на сеансе , Если не найден, я бы хотел показать контроллер входа в систему, который я создал в своей раскадровке. Если найдено, мне нужно все, чтобы просто вернуться, как обычно.iOS viewWillAppear Ошибка: «вид не находится в иерархии окон»
У меня есть еще один контроллер домашнего вида, который настроен на мой первоначальный контроллер. Я не хочу, чтобы контроллер домашнего представления отображался, если пользователь не найден.
Я делаю это, чтобы иметь дело с восстановлением государства, а также ищу пользователь в сессии:
func application(application: UIApplication, shouldRestoreApplicationState coder: NSCoder) -> Bool {
return <userInSession> != nil
}
Я создал SEGUE из дома зрения контроллера для входа просмотра контроллера. В методе viewDidAppear контроллера view view я проверяю, чтобы пользователь выполнил вход. Если они не вошли в систему, я выполняю segue для контроллера входа в систему.
Как только пользователь входит в систему, я просто уменьшаю контроллер входа в систему.
Проблема заключается в том, что, поскольку я использую viewDidAppear, контроллер домашнего вида просматривается на долю секунды, прежде чем контроллер входа в систему появится в случае, если пользователь не войдет в систему. Я хочу этого избежать. Я попытался с помощью метода viewWillAppear, но который производит следующее сообщение об ошибке:
2014-12-14 23: 42: 52.910 APPNAME [78187: 18685210] Внимание: попытка представить < appname.LoginUIViewController: 0x7fdcc1616970> на < APPNAME. HomeUITabBarViewController: 0x7fdcc1746610> чей вид не находится в иерархии окон!
Любые мысли о том, как справиться с ситуацией?
Вы пробовали делать сегу без анимации? – rdelmar
@rdelmar Да, у меня есть. Вид по-прежнему отображается в течение секунды секунды - выглядит не очень красиво –