拆分视图控制器导航栏问题

Split view controller navigation bar question

背景:

我有一个 UISplitViewController 显示 UITabBarController 作为其详细视图 (.secondary)。 UITabBarController 显示 UIViewController 嵌入 UINavigationController

剧情变厚了:

在 iPad(不是 .compact)上,效果很好。 UINavigationControllerUINavigationBar 显示为没有来自 UISplitViewController 的推送转场,因为视图是 .tiled.

但是,在 iPhone(.compact 环境)上,这会出现问题。当 showDetailViewController: 被调用时,UISplitViewController 推动 UITabBarController,这导致 second 冗余 UINavigationBar 带有“返回” UIBarButtonItem 代表 UISplitViewControllerUINavigationBar,然后正下方是 UINavigationControllerUINavigationBar

这是我试过的方法:

从层次结构中删除 UINavigationController 修复了 iPhone(或 .compact 环境)的问题,但引入了 iPad 的问题(不是 .compact): 根本没有显示 UISplitViewController 中的 UINavigationBar

有直接的solution/protocol吗?我觉得好像这是一个很常见的情况,我不确定如何前进。

问题:

重申一下,目标是在 iPhone(.compact)和 iPad(不是 .compact)上显示一个 UINavigationBar 以获取详细信息(.secondary) 我的 UISplitViewController.

视图

对于遇到类似问题的任何其他人(因为我在本网站上发现的任何类似问题都没有得到解答),解决方案是将 UITabBarController 嵌入 UINavigationController

UISplitViewController 发现它正在推动 UINavigationController,并合并 UINavigationBar。在我最初的设置中,UITabBarController 充当屏障并阻止 UINavigationBar 合并。