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

标签 ios cocoa-touch uinavigationcontroller uikit uitabbarcontroller

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

我的应用程序从一个主导航 Controller 开始,该 Controller 将登录 View Controller 作为其 Root View Controller 。登录 View Controller 有一个按钮。当按下按钮时,将按下选项卡栏 Controller 。选项卡栏 Controller 有 4 个项目。每个项目都是一个辅助导航 Controller ,维护自己的 View Controller 堆栈。所以基本上结构是:主 UINavigationController-> 登录 View Controller -> UITabBarController -> 辅助 UINavigationController -> View Controller 数组。

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

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

最佳答案

我不建议使用 UINavigationController 从登录到主 UITabBarController...就个人而言,我更喜欢使用不同的 rootViewController 的主 UIWindow 作为登录或呈现登录模态(没有动画)...这更有意义,因为您不希望用户“导航回”登录屏幕,而是使用注销并完全切换上下文。

关于ios - 另一个 UINavigationController 内的 UITabBarController 内的 UINavigationController 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30639886/

相关文章:

ios - 启动画面不显示在纹波模拟器中

ios - 让 View 覆盖应用程序中所有其他 viewController 的正确方法是什么?

ios - ViewController 被推送到 UINavigationController 后立即弹出

iOS 7 应用程序图标、启动图像和命名约定同时保留 iOS 6 图标

iphone - 适用于iPhone应用程序的iOS 3.0+兼容性

ios - ObjectiveC 与 iOS 中对 %d 的不同处理

iphone - 如何检查 NSSet 或 NSCountedSet 中是否存在现有项目?

iphone - 在 iPhone SDK 中绘制图形有哪些 Core-Plot 的替代方法

ios - UINavigationController 包含、iOS7 和状态栏。漏洞?

ios - 是否可以隐藏 UINavigationController 然后在用户向下滑动时显示它?