使用Navigationcontroller和Tabbar Controller处理2个故事板

时间:2018-11-22 11:00:37

标签: ios xcode uinavigationcontroller storyboard uitabbarcontroller

我正在构建一个带有2个故事板的新iOS应用。 第一个用于验证用户身份,第二个用于应用程序本身。

我正在使用情节提要参考板在它们之间进行切换。

我正在使用应用程序委托中的window对象来确定显示了哪个viewController或情节提要。

现在问题出在窗口对象上。 为简化问题-


故事板1中的登录视图控制器-应用启动

显示的屏幕-signinviewcontroller

appdelegate->窗口-> uinavigationcontroller(rootviewcontroller)-> signinviewcontroller(导航控制器的topViewController和visibleViewController)

很好

用户登录-故事板2中的标签栏控制器

显示的屏幕-profileviewcontroller(标签栏视图控制器)

appdelegate->窗口-> uinavigationcontroller(rootviewcontroller)->标签栏(visibleviewcontroller)-> profileviewcontroller(标签栏visibleViewController)

appdelegate->窗口-> uinavigationcontroller(rootviewcontroller)-> signinviewcontroller(顶部viewcontroller)

为什么signinviewcontroller是topview控制器?

为什么TabBarController不是窗口对象的rootview控制器?

返回情节提要1来登录ViewController

显示的屏幕-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)

storybopard 1

storyboard 2

0 个答案:

没有答案