【问题标题】:Nested UINavigationControllers嵌套 UINavigationControllers
【发布时间】:2025-12-14 08:25:01
【问题描述】:

是否可以在 UINavigationController 中拥有 UINavigationController?我遇到了问题并阅读了相互矛盾的报告:

iPhone UINavigationController inside UIViewController

App with nested UINavigationController crashes in iOS SDK 4.2

该应用程序包含几个 2-3 步的子工作流程,我需要在主工作流程的不同位置重复使用它们,因此是嵌套。我可以拥有一个主 UINavigation 控制器,其中包含许多工作流逻辑,但我更喜欢将它们建模为独立的子工作流。

旁注——如果我使用 presentModalViewController 启动子工作流(因为这对所有 UIView 都有效),它会起作用,但当我使用 pushViewController 启动它时只会显示标题栏而不是视图。我不希望它是模态的,因为它覆盖了整个屏幕。

【问题讨论】:

    标签: iphone cocoa-touch ios uinavigationcontroller


    【解决方案1】:

    我不知道这是否可能(即有一种方法可以破解它以使其工作)但当然不建议使用多个 UINavigationController。如果您认为这是必要的,我会质疑应用程序设计,因为它不仅在实施方面而且对您的用户来说都很复杂。

    一种封装方法是让您的主 UI 使用单个 UINavigationController。当用户执行分支到其自己的逻辑流程的操作时,将新的导航控制器呈现为模态视图控制器,并让用户完成该逻辑流程并在完成返回主 UI 时关闭模态。

    【讨论】: