Ios 当我向NavigationController演示时“;其视图不在窗口层次结构中&引用;错误

Ios 当我向NavigationController演示时“;其视图不在窗口层次结构中&引用;错误,ios,swift,firebase,uinavigationcontroller,firebase-authentication,Ios,Swift,Firebase,Uinavigationcontroller,Firebase Authentication,这是我的主UITabBarController。如果有用户,它就会启动,如果没有用户,它就会显示给SignAndLoginVC() 如果有用户,则myHomeVC()启动时不会出现层次结构问题,但在注销时再次登录,注销后会显示 Seyahapp[16950:1337223]警告:试图 显示其视图不在窗口层次结构中的对象 这就是我在Signandloginvc()中所做的 如果用户单击登录按钮,它将按下LoginVC()。 SignandLoginVC(),LoginVC(),SignupVC()

这是我的主
UITabBarController
。如果有用户,它就会启动,如果没有用户,它就会显示给
SignAndLoginVC()

如果有用户,则my
HomeVC()
启动时不会出现层次结构问题,但在注销时再次登录,注销后会显示

Seyahapp[16950:1337223]警告:试图 显示其视图不在窗口层次结构中的对象

这就是我在Signandloginvc()中所做的

如果用户单击登录按钮,它将按下
LoginVC()
SignandLoginVC()
LoginVC()
SignupVC()
这三个vc是导航控制器,
homeVC
是tabbar控制器

编辑:我在FIRAuth中所做的,例如打印(“123”)。有两次。我是说它会打印 123 123
我无法理解。

这是因为您试图从嵌入式(vc on
UINavigationController
UITabbarController
)视图控制器演示模态视图控制器。根据VC的嵌入位置,从导航或tabbar控制器显示新的模态VC,如
self.tabbarController.present(…)
self.navigationController.present(…)
。希望这有帮助!祝你好运

这是因为您试图从嵌入式(vc on
UINavigationController
UITabbarController
)视图控制器显示模态视图控制器。根据VC的嵌入位置,从导航或tabbar控制器显示新的模态VC,如
self.tabbarController.present(…)
self.navigationController.present(…)
。希望这有帮助!祝你好运

这是因为这两行代码:

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

您创建了一个UINavigationController,它导致了层次结构问题。

这是因为以下两行代码:

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

您创建了一个UINavigationController,它导致了层次结构的问题。

但是我必须创建一个UINavigationController。使用
navigationController?.popToRootViewController(动画:true)
,检查它是否解决了问题。主要原因是Firebase的addStateDidChangeListener方法在内部调用了两次,这是一个有趣的问题。因此,我决定使用if FIRAuth.auth()?.currentUser==nil而不是addStateDidChangeListener,我的问题已经解决了。但是我必须创建一个UINavigationController。使用
navigationController?.popToRootViewController(动画:true)
,而不是三行代码,检查它是否解决了问题。主要原因是Firebase的addStateDidChangeListener方法在内部调用了两次,这是一个有趣的问题。所以我决定使用if FIRAuth.auth()?.currentUser==nil代替addStateDidChangeListener,我的问题已经解决了。
let navController = UINavigationController(rootViewController: SALcontroller)
self.present(navController, animated: true, completion: nil)