UISplitViewController 可以成为 UINavigationController 中的根控制器吗?

Posted

技术标签:

【中文标题】UISplitViewController 可以成为 UINavigationController 中的根控制器吗?【英文标题】:Can a UISplitViewController be the root controller in a UINavigationController? 【发布时间】:2010-09-16 02:39:50 【问题描述】:

界面构建器不允许您将 UISplitViewController 添加为 UINavigationController 的根控制器。 我还尝试以编程方式创建 UINavigationController 并将其根视图控制器设置为 UISplitViewController。

结果是一个只有导航栏的空窗口。

我还尝试过替换拆分视图控制器,MGSplitViewController。它主要工作,除了在拆分视图控制器中,主视图是另一个 UINavigationController。它的导航栏显示得太粗了。改变方向和返回可以清除它。

我一直在尝试各种不同的方法来获得看起来像拆分视图的视图和我在其他视图之间切换的视图。我在标签视图控制器中尝试过,编写自己的控制器来管理窗口的子视图,并将拆分视图作为托管视图,现在是导航控制器。所有尝试都有一些问题。最一致的问题是关于视图的方向。我的应用在横向模式下运行,通常子视图认为它仍然是纵向的。

任何想法表示赞赏。

【问题讨论】:

【参考方案1】:

没有。

底线:UISplitViewController 必须是应用程序的根视图(或者更具体地说,可能是窗口)。它不能存在于UINavigationController 或其他任何东西中。

当前的 SDK 就是这种情况,不保证将来的 SDK 会改变。

【讨论】:

这不是真的。可能有人认为 UISplitViewController 应该 只是一个窗口的根视图,您绝对可以通过编程方式创建一个 UISplitViewController 并将其视图添加为另一个视图的子视图。我有一个客户这样做是为了展示应用程序的设置屏幕,它工作得很好。也就是说,将拆分视图放在导航堆栈上似乎很奇怪。 @chrispix 在撰写本文时,将拆分视图放在另一个视图控制器中会产生运行时错误。 AFAIK 它仍然可以,但我还没有尝试使用 4.2 SDK。风险自负。【参考方案2】:

向导航堆栈添加拆分视图似乎很奇怪。拆分视图控制器的主窗格通常是导航控制器,因此(在不了解您的设计的情况下),我可能会使用它来控制您的导航层次结构。

【讨论】:

以上是关于UISplitViewController 可以成为 UINavigationController 中的根控制器吗?的主要内容,如果未能解决你的问题,请参考以下文章

UISplitViewController 可以成为 UINavigationController 中的根控制器吗?

UISplitViewController - 并排或纵向叠加

是否可以在 uipopovercontroller 中有一个 uisplitviewcontroller?

将 UIToolBar 放在 UISplitViewController 上方?

iPad 上的 UITraitCollection 和 UISplitViewController

UISplitViewController - 以纵向模式打开,masterViewController 可见