Нулевой при раскадровке. - PullRequest
0 голосов
/ 09 мая 2020

Я создаю приложение для аренды с помощью firebase. У меня есть экран WelcomeViewController. Теперь функциональность этого экрана заключается в том, что при запуске приложения оно проверяет, вошел ли пользователь в систему или нет. Если это так, то он создает экземпляр раскадровки для HomeScreenViewController, и если пользователь вышел из системы, он должен создать экземпляр раскадровки для LoginViewController. Теперь первая часть работает нормально, и раскадровка действительно создается для HomeScreenViewController, но во время второй части, когда запускается storyboard.instantiate, происходит сбой с ошибкой «найдено ноль, а принудительное развертывание необязательно». Я перепроверил все идентификаторы раскадровки и все такое. Я не могу понять.

import UIKit import Firebase

class WelcomeViewController: UIViewController {

var docRef:DocumentReference!
var Uid:String?
var homeVC:UITabBarController? = nil



override func viewDidLoad() {
    super.viewDidLoad()
    if Auth.auth().currentUser != nil {
        //User is signed in
        print("User is logged in")
        docRef = Firestore.firestore().document("Users/\(Auth.auth().currentUser!.uid)")
        docRef.getDocument { (docSnapshot, error) in
            guard let docSnapshot = docSnapshot, docSnapshot.exists else { print("Error Founddddd");return}
            let myData = docSnapshot.data()
            let type = myData?["Role"] as? String ?? ""
            print(type)

            if type == "Owner" {
                self.homeVC = self.storyboard?.instantiateViewController(identifier: "OwnerHome") as? OwnerHomeTabBarViewController
                self.view.window?.rootViewController = self.homeVC
                self.view.window?.makeKeyAndVisible()

            }
            else {
                self.homeVC = self.storyboard?.instantiateViewController(identifier: "TouristHome") as? TouristHomeTabBarViewController
                self.view.window?.rootViewController = self.homeVC
                self.view.window?.makeKeyAndVisible()
            }
        }

    }

      else {
             print("User is loggedout")
            //Send User to Login/Signup Screen
        let Storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
        let LoginVC = Storyboard.instantiateViewController(identifier: "loginScreen") as! SignInViewController
        self.view.window!.rootViewController = LoginVC  //Error is coming here
        self.view.window?.makeKeyAndVisible()



        }

    }

}

Ответы [ 2 ]

0 голосов
/ 13 мая 2020

Вы установили идентификатор раскадровки в раскадровке для каждого ViewController?

0 голосов
/ 09 мая 2020

Думаю, вам нужно удалить ! из self.view.window! и заменить на ?.

...