【问题标题】:Changing Detail's Navigation Bar in UISplitViewController in Portrait mode在纵向模式下更改 UISplitViewController 中详细信息的导航栏
【发布时间】:2016-08-17 11:35:13
【问题描述】:

我有一个UISplitViewController,其中MasterViewControllerDetailViewController 有自己的导航控制器。

这是我的故事板:

MasterViewControllerDetailViewController 都可见时(iPhone 6+ 横向和 iPad):

DetailViewController 使用Detail Navigation Controller。这里的一切都很完美。

当只有DetailViewController 可见时(iPhone 6+ 纵向和所有其他 iPhone 横向和纵​​向):

DetailViewController 仍然使用Detail Navigation Controllerself.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


【解决方案1】:

要在UISplitViewController 上下文中获取详细控制器的当前UINavigationBar 对象,您可以试试这个:

let navigationBar = navigationController?.navigationController?.navigationBar ?? navigationController?.navigationBar

【讨论】:

    猜你喜欢
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多