Я пытаюсь сделать так, чтобы мой начальный root контроллер представления был HomeViewController
. Затем я запускаю код, чтобы проверить, вошел ли пользователь (я использую Firebase) уже в систему. Если пользователь не вошел в систему, тогда контроллер вида root изменится на LoginViewController
и представит модально экраны входа в систему / регистрации, а затем освободит эти VC после того, как пользователь вошел в систему.
func authenticateUserConfigureView() {
if Auth.auth().currentUser == nil {
DispatchQueue.main.async {
let navController = UINavigationController(rootViewController: LoginViewController)
navController.navigationBar.barStyle = .default
self.present(navController, animated: true, completion: nil)
}
} else{
configureViewComponents()
}
}
похоже, что если я напишу код rootViewController: LoginViewController
эта ошибка появляется
Невозможно преобразовать значение типа 'LoginViewController.Type' в ожидаемый тип аргумента 'UIViewController'
В качестве альтернативы, если я напишу LoginViewController()
, то, хотя кажется, что пользователя перенаправляют на контроллер вида входа в систему, симулятор сразу же падает.
ОБНОВЛЕНИЕ
Я пытался используя
let homeViewController = self.storyboard?.instantiateViewController(identifier: Constants.Storyboard.homeViewController) as? HomeViewController
view.window?.rootViewController = homeViewController
view.window?.makeKeyAndVisible()
, но, похоже, ничего не происходит (хотя кажется, что он работает). Кстати, я использую основную раскадровку для создания своих контроллеров представления.