这是我的主要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我听不懂。
这是因为您试图从嵌入式( UINavigationController
或 UITabbarController
上的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 问题。