черный экран со sceneDelegate при использовании раскадровки
Сначала отображается AuthViewController (он же root), затем черный экран с tabBarController, но без элемента на нем.
В чем может быть проблема?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(frame: UIScreen.main.bounds)
window?.windowScene = windowScene
if let user = Auth.auth().currentUser {
FirestoreServices.shared.getUserData(user: user) { (result) in
switch result {
case .success(let muser):
let mainTabBar = MainTabBarViewController()
mainTabBar.currentUser = muser
mainTabBar.modalPresentationStyle = .fullScreen
self.window?.rootViewController = mainTabBar
case .failure(_):
self.window?.rootViewController = AuthViewController()
}
}
} else {
self.window?.rootViewController = AuthViewController()
}
window?.makeKeyAndVisible()
}
1 ответ
Решение
РЕДАКТИРОВАТЬ: вам нужно создать экземпляр из раскадровки, поскольку вы используете раскадровку. Вам необходимо инициализировать переменную вашего окна window с помощью windowScene.
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(windowScene: windowScene)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
if let user = Auth.auth().currentUser {
FirestoreServices.shared.getUserData(user: user) { (result) in
switch result {
case .success(let muser):
let mainTabBar = storyboard.instantiateViewController(withIdentifier: "viewControllerIDInStoryboard") as! TabViewController
mainTabBar.currentUser = muser
mainTabBar.modalPresentationStyle = .fullScreen
self.window?.rootViewController = mainTabBar
print("BLA BLA \(String(describing: self.window?.frame))")
case .failure(_):
let authVC = storyboard.instantiateViewController(withIdentifier: "viewControllerIDInStoryboard") as! AuthViewController
self.window?.rootViewController = authVC
}
}
} else {
let authVC = storyboard.instantiateViewController(withIdentifier: "viewControllerIDInStoryboard") as! AuthViewController
self.window?.rootViewController = authVC
}
window?.makeKeyAndVisible()
}