(Swift) 在嵌套在 Main UINavigationController 中的 UINavigationController 和 UITabController 之间切换

Posted

技术标签:

【中文标题】(Swift) 在嵌套在 Main UINavigationController 中的 UINavigationController 和 UITabController 之间切换【英文标题】:(Swift) Switching between UINavigationController and UITabController nested within Main UINavigationController 【发布时间】:2018-03-09 09:51:47 【问题描述】:

通过storyboard,应用程序入口点是一个单独的UINavigationController,它对用户身份验证执行一些逻辑,以首先确定是推送主页视图的嵌入UITabBarController还是呈现登录/注册视图的嵌入UINavigationController - 这个我没意见。

我遇到的困难是如何正确地在 Sign-In/-Sign Up 视图的嵌入式 UINavigationController 登录/注册和 Home 视图的嵌入式 @987654327 之间正确地进行直接转换@ 退出时。我认为冲突在于处理原始rootviewcontroller 在进入时推送/呈现上述视图和嵌套UINavigationController 在登录/注册视图中的“rootviewcontroller 关系”。

对于这些直接转换,我不知道如何从原始 rootviewcontroller 推送/呈现。如果有人可以帮助澄清,是否使用appdelegate等,将不胜感激!

Storyboard UI Flow

【问题讨论】:

像根视图一样排列 -> 登录或注册 -> 登录屏幕中的主屏幕选项卡视图 检查是否登录立即推送主屏幕 【参考方案1】:

有几种方法可以处理这个问题,但一般来说,我的方法是通过一个主导航控制器来处理这个问题,该控制器将保留整个登录/主菜单数组控制器,然后简单地添加或根据用户是登录还是注销,从视图控制器中删除菜单(仅显示 [signin] 或 [signin, mainmenu] 作为导航控制器上的视图控制器)。

最后,根据标签栏的逻辑,我通常会为每个标签栏项嵌入一个导航控制器。

看一下这里的速写:

【讨论】:

以上是关于(Swift) 在嵌套在 Main UINavigationController 中的 UINavigationController 和 UITabController 之间切换的主要内容,如果未能解决你的问题,请参考以下文章

嵌套函数有啥好处(一般/在 Swift 中)

iOS: 学习笔记, Swift名字空间

Swift 嵌套类属性

Swift 类型嵌套

Swift学习:嵌套类型

swift 学习- 22 -- 嵌套类型