0

我有这种情况的故事板;UITAbBarController作为主UISplitController和showDetail:

My Storyboard

根视图控制器是具有UISplitViewController:

  • MASTER:一个的UITabBarController
    • 0 - >的UINavigationController - > ...其它ViewControllers
    • 1 - > UINavigationController - > ...其他ViewControllers
  • 详细信息:一个UINavigationController - >一DetailViewControler

有了这个层次从去年的ViewController的SEGUE showDetail在主到导航控制器详情不起作用,因为细节是模态呈现在倒塌的环境,而不是用推动力呈现它。 我觉得这个行为来自Tab Bar Controller,因为它不像UINavigationController那样是容器。事实上,如果我删除标签栏并将导航设置为分割视图控制器的主控,它的工作原理与平常一样。

如何使用分隔视图控制器Master等标签栏并在折叠环境中获得showDetail segue的正确行为?

P.S .:对于正确的行为,我的意思是在横向紧凑环境(iPhone 6 plus Portrait)中推动主导航控制器中的细节。

+0

将Master-side视图控制器的segue直接设置为详细视图控制器,而不是其中嵌入了详细信息VC的导航控制器。 – pbasdf

+0

它不起作用:细节以模态方式呈现,并且不会在主控制器的导航控制器堆栈中推送。 – Andorath

+0

嘿,@Andorath你能弄清楚这一点吗?我有同样的问题。 – animaonline

回答

0

我解决了这个问题,压倒一切的UISplitViewControllerDelegate的这些方法和内部实现他们所有的行为,我从SplitViewController想:

  • primaryViewControllerForCollapsingSplitViewController
  • splitViewController:collapseSecondaryViewController:ontoPrimaryViewController
  • primaryViewControllerForExpandingSplitViewController
  • splitViewController :separateSecondaryViewControllerFromPrimaryViewController:

我建议你看一看UISplitViewController文档,因为它解释了很好的分割控制器的行为:

UISplitViewController Documentation

你可以找到你所需要的是什么:

拆分视图控制器在尺寸类别在水平正常和水平紧凑之间切换时执行折叠和展开转换。在这些转换过程中,分割视图控制器将更改其显示其子视图控制器的方式。当从水平常规变为水平紧凑时,分割视图控制器将一个视图控制器折叠到另一个视图控制器上。当从水平紧凑的背面改变为水平的正面背面时,它再次展开界面并根据显示模式显示其子视图控制器中的一个或两个。 转换到折叠界面时,分割视图控制器与其委托一起使用以管理转换。在折叠转换结束时,分割视图控制器通常仅显示其主视图控制器中的内容。您可以通过在分割视图控制器委托中实施primaryViewControllerForCollapsingSplitViewController:方法来更改此行为。您可以使用该方法来指定辅助视图控制器或完全不同的视图控制器 - 可能更适合在水平紧凑环境中显示。如果要对视图控制器和视图层次结构执行任何其他调整,还可以在委托中实现splitViewController:collapseSecondaryViewController:onPrimaryViewController:方法。 展开过程通过要求委托指定哪个视图控制器成为主视图控制器并为委托人提供执行过渡本身的机会来颠倒折叠过程。如果实现用于折叠拆分视图接口的委托方法,则还应该实现primaryViewControllerForExpandingSplitViewController:和splitViewController:separateSecondaryViewControllerFromPrimaryViewController:用于扩展该接口的方法。如果您没有实现任何方法,则分割视图控制器会提供默认行为来处理折叠和展开转换。 有关用于管理折叠和展开转换的方法的更多信息,请参阅UISplitViewControllerDelegate协议参考。

希望这可以帮助你。

PS:对不起英文不好。

相关问题