rootViewController не загружается после вызова, используя -> present(viewControllerToPresent: UIViewController, animated: true, завершение: nil)
Мой rootViewController работает и загружается нормально. Тем не менее, когда я называю это с помощью present(viewControllerToPresent: UIViewController, animated: true, completion: nil)
из другого viewController я получаю только черный экран.
Я просмотрел stackOverflow, но нашел только решения для пользователей раскадровок. Я делаю это программно
@objc func handleLogin() {
print("LOGIN BUTTON TOUCHED")
guard let email = emailTextField.text, let password = passwordTextField.text else {
print("Form is not valid.")
return
}
Auth.auth().signIn(withEmail: email, password: password) { (user, error) in
if error != nil {
print(error!)
return
}
let viewController = RootViewController()
*** self.present(viewController, animated: true, completion: nil)
print("Logged in")
}
}
2 ответа
В этом нет ничего плохого self.present(viewController, animated: true, completion: nil)
Я думаю твой RootViewController()
уже представлен. Черный экран, который вы видите, может быть без данных? Я не уверен, что вам понадобится ваш код для этого класса.
Другой подход, который вы можете рассмотреть, это заменить реальный rootViewController
от текущего uiWindow
как это
@objc func handleLogin() {
print("LOGIN BUTTON TOUCHED")
guard let email = emailTextField.text, let password = passwordTextField.text else {
print("Form is not valid.")
return
}
Auth.auth().signIn(withEmail: email, password: password) { [weak self] (user, error) in
guard let strongSelf = self else { return }
guard error == nil else { return }
guard let user = user else { return }
UIApplication.shared.keyWindow?.rootViewController = RootViewController()
print("Logged in")
}
}
Вы создали новый экземпляр (RootViewController), и он должен быть черным.. вы не ссылаетесь на свой RootViewController