另一个 UINavigationController 内的 UITabBarController 内的 UINavigationController 问题

Issue with a UINavigationController inside a UITabBarController inside another UINavigationController

不要让我显示代码,因为没有代码。一切都在故事板中完成。

我的应用程序以一个主导航控制器开始,该控制器将登录视图控制器作为其根视图控制器。登录视图控制器有一个按钮。按下按钮时,将按下标签栏控制器。选项卡栏控制器有 4 个项目。每个项目都是一个辅助导航控制器,维护自己的视图控制器堆栈。所以基本上结构是:main UINavigationController-> login view controller -> UITabBarController -> secondary UINavigationController -> array of view controllers.

问题是:当我沿着辅助导航控制器的视图控制器堆栈前进时,我想通过按导航栏上的 Back 按钮返回到前一个视图控制器。但事实证明,导航栏不属于当前的导航控制器(次要的)!它属于主导航控制器!因此,当我点击 Back 按钮时,我会弹出到应用程序的最开头,弹出到登录视图控制器,因为主导航控制器会弹出选项卡栏控制器。希望我把问题描述清楚了。

当然我可以做一个解决方法。如果我隐藏主导航控制器的导航栏,那么我会看到辅助导航控制器的导航栏,这正是我所需要的。但我觉得这不是一个合适的解决方案。我觉得必须有一个正确的。你们觉得怎么样?

我不建议使用 UINavigationController 从登录到主 UITabBarController...就个人而言,我更喜欢使用不同的 rootViewControllerUIWindow 作为登录或显示登录 模态 (没有动画)...这更有意义,因为您不希望用户 "navigate back"登录屏幕,而是完全使用注销和切换上下文。