Несмотря на то, что вы можете поменять rootViewController после запуска приложения, может быть проще упорядочить контроллеры представления, чтобы они все ссылались на один rootViewController.
Если вы хотите, чтобы начальный экран входа в систему пропускался при последующих запусках приложения, вы можете сделать контроллер представления входа в систему rootViewController и в viewDidAppear () перейти прямо к контроллеру основного представления, когда вход в систему не выполнен. требуется. Тогда вы можете раскрутить переход для «выхода из системы».
В приложении делегат:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let loginViewController = UIStoryboard(name: "Login", bundle: nil).instantiateInitialViewController()
self.window?.rootViewController = loginViewController
self.window?.makeKeyAndVisible()
}
Затем в LoginViewController:
func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if alreadyAuthenticated {
performSegue(withIdentifier: SegueIdentifier.goToMain, sender: self)
}
}
Возможны другие подобные комбинации в зависимости от ваших конкретных потребностей. Там может быть некоторое преимущество в том, что вы можете получить доступ к презентации по умолчанию и отключить анимацию, что будет намного сложнее реализовать, если вы меняете rootViewController.