【发布时间】:2016-08-17 11:35:13
【问题描述】:
我有一个UISplitViewController,其中MasterViewController 和DetailViewController 有自己的导航控制器。
这是我的故事板:
当MasterViewController 和DetailViewController 都可见时(iPhone 6+ 横向和 iPad):
DetailViewController 使用Detail Navigation Controller。这里的一切都很完美。
当只有DetailViewController 可见时(iPhone 6+ 纵向和所有其他 iPhone 横向和纵向):
DetailViewController 仍然使用Detail Navigation Controller(self.navigationController 返回Detail Navigation Controller)。但最重要的是,Master Navigation Controller 的导航栏是可见的,而不是 Detail Navigation Controller 的导航栏。
我想在纵向和横向模式下对每个设备尺寸的DetailViewController 使用相同的导航栏。 (主导航栏和细节导航栏的样式不同。)
有没有办法在不声明名为 currentlyVisibleNavigationController 的 hacky 计算属性或保留 ViewController 之间的引用的情况下做到这一点?
【问题讨论】:
-
在折叠模式下,带有 UINavigationController for master 的 UISplitViewController 将详细视图控制器附加到主导航控制器的 viewControllers 数组中。当细节视图控制器也是导航控制器时,它按原样附加,但主导航控制器会查看细节以将两者呈现为一个连续的导航堆栈。 Master 的导航控制器将始终优先。要设置不同的样式(取决于您要使用的样式),您需要使主导航控制器的样式以其顶视图控制器为条件。
-
感谢@JustinAnderson 的解释,这很有道理。
标签: ios iphone swift ipad uisplitviewcontroller