当我向导航控制器呈现错误时"whose view is not in the window hierarchy!"



这是我的主要UITabBarController。如果有用户,它正在启动,如果没有用户向SignAndLoginVC()展示。

如果有用户我的HomeVC()启动,则没有层次结构问题,但是当注销时,然后再次登录,然后注销后,它说

2017-06-22 14:26:06.880 Seyahapp [16950:1337223]警告:尝试 存在其视图不在窗口层次结构中!

    let logoutButton: UIButton = {
    let button = UIButton()
    button.setTitle("Logout", for: .normal)
    button.backgroundColor = .blue
    button.addTarget(self, action: #selector(logout), for: .touchUpInside)
    return button
}()
func logout(){
    do {
        try FIRAuth.auth()?.signOut()
       }
    }catch let signOutErr as NSError{
        print("Couldnt sign out", signOutErr)
    }
}
override func viewDidLoad() {
    self.delegate = self
    FIRAuth.auth()?.addStateDidChangeListener({ (auth, user) in
        if user == nil {
            let SALcontroller = SignAndLoginVC()
            let navController = UINavigationController(rootViewController: SALcontroller)
            self.present(navController, animated: true, completion: nil)
        }
    })
    fetchUser()
    setUpControllers()
}

这就是我在Signandloginvc()

中所做的
    func loginHandle() {
    let loginVC = LoginVC()
    UIButton.animate(withDuration: 0.3) {
        self.loginButton.backgroundColor = UIColor.rgb(red: 15, green: 193, blue: 131)
    }
    navigationController?.pushViewController(loginVC, animated: true)

}
override func viewDidLoad() {
    super.viewDidLoad()
    if FIRAuth.auth()?.currentUser == nil {
            print("there is no user")
    }
    view.backgroundColor = UIColor.rgb(red: 41, green: 80, blue: 80)
    navigationController?.navigationBar.isHidden = true
    logoSetup()
    buttonsSetup()
    }

如果用户单击"登录"按钮,则按下LoginVC()SignandLoginVC()LoginVC()SignupVC()这3 VC是导航控制器,homeVC是Tabbar Controller。

编辑:我在Firauth中做什么,例如打印(" 123"(。它确实两次。我的意思是打印123123我听不懂。

这是因为您试图从嵌入式( UINavigationControllerUITabbarController上的VC(呈现模态视图控制器。根据VC嵌入的位置,从导航或TABBAR控制器(如self.tabbarController.present(...)self.navigationController.present(...)(呈现新的Modal VC。希望这可以帮助!祝你好运!

那是因为这两行代码:

let navController = UINavigationController(rootViewController: SALcontroller)
self.present(navController, animated: true, completion: nil)

您创建一个 uinavigationController ,它引起了 esferarchy 问题。

最新更新