Это может звучать очень просто. Но я не мог найти выход.
Я использую Firebase аутентификацию, если это необходимо знать заранее.
Контроллер initial view установлен как LoginViewController
. У меня здесь две кнопки: Регистрация & Вход . Кнопка Регистрация представляет другой контроллер вида модально, где пользователь может выбрать регистрацию. После успешной регистрации, SignUpViewController
отклоняется, поэтому появляется LoginViewController
. Внутри LoginViewController
viewDidAppear(_:)
я проверяю текущего пользователя и, если доступно, перенаправляю пользователя на HomeViewController
:
class LoginViewController: UIViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if let _ = Auth.auth().currentUser {
// This is a modal segue
performSegue(withIdentifier: "SegueToHomeViewController", sender: self)
}
}
}
При нажатии кнопки Logout в HomeViewController
контроллер просто отклоняется из-за выхода пользователя из системы.
class HomeViewController: UIViewController {
@IBAction func logoutButtonDidTouch(_ sender: UIBarButtonItem) {
do {
try Auth.auth().signOut()
// This dismiss lands user to the LoginViewController again
// So user has chance to login again with `Login` button this time
dismiss(animated: true, completion: nil)
} catch {
print(error)
}
}
}
Пока все работает нормально. Но есть тонкое плохое поведение . Потому что каждый раз, когда приложение запускается, появляется LoginViewController
, а затем перенаправляется на HomeViewController
, что не так хорошо, как пользовательский опыт.
Итак, я хочу, чтобы пользователь вошел в систему уже в первом окне, которое он / она увидит, будет HomeViewController
, отличным от LoginViewController
. Но если пользователь ранее не входил в систему, он / она попадет на LoginViewController
.
Да, я могу проверить из AppDelegate
application(_:didFinishLaunchingWithOptionss:)
для текущего пользователя и, если найден, перейти непосредственно к HomeViewController
. Но тогда я потеряю LoginViewController
, когда пользователь нажмет на Выйти в HomeViewController
.
На первый взгляд, это почти то, что мне нужно сделать:
Все что угодно, даже без примера кода приветствуется.