我正在构建一个带有2个故事板的新iOS应用。 第一个用于验证用户身份,第二个用于应用程序本身。
我正在使用情节提要参考板在它们之间进行切换。
我正在使用应用程序委托中的window对象来确定显示了哪个viewController或情节提要。
现在问题出在窗口对象上。 为简化问题-
显示的屏幕-signinviewcontroller
appdelegate->窗口-> uinavigationcontroller(rootviewcontroller)-> signinviewcontroller(导航控制器的topViewController和visibleViewController)
很好
显示的屏幕-profileviewcontroller(标签栏视图控制器)
appdelegate->窗口-> uinavigationcontroller(rootviewcontroller)->标签栏(visibleviewcontroller)-> profileviewcontroller(标签栏visibleViewController)
appdelegate->窗口-> uinavigationcontroller(rootviewcontroller)-> signinviewcontroller(顶部viewcontroller)
为什么signinviewcontroller是topview控制器?
为什么TabBarController不是窗口对象的rootview控制器?
显示的屏幕-signinviewcontroller
appDelegate->窗口-> uinavigationcontroller(rootviewcontroller)->标签栏(visibleviewcontroller)-> profileviewcontroller(标签栏visibleViewController)
appdelegate->窗口-> uinavigationcontroller(rootviewcontroller)-> signinviewcontroller(顶部viewcontroller)
为什么即使显示了情节提要1中的登录视图控制器,TabBarController还是可见的视图控制器?
重要的一点是,情节提要参考segue连接到viewControllers的父控制器
,这意味着我从情节提要1到2的情节提要参考连接到了navigationController本身-在viewController中-
self.navigationController?.performSegue(withIdentifier: "AuthToChatSegue", sender: nil)
,从情节提要2到1-
tabBarController?.performSegue(withIdentifier: "ChatToAuth", sender: nil)