pushViewController和showViewController之间的区别

时间:2015-02-13 11:49:32

标签: ios uiviewcontroller uinavigationcontroller

UINavigationController上的pushViewController和showViewController方法有什么区别?

2 个答案:

答案 0 :(得分:5)

显示segue可以与导航控制器一起使用,它们只是将viewControllers推送到您的堆栈上。

显示细节segue只对分割视图控制器有意义。由于分割视图控制器中有两个viewControllers,您可以:

通过显示(推送,因为默认项目使用navigationVC作为主VC)在主视图控制器中导航 使用Show detail segue在详细视图控制器中显示详细信息 如果您不知道如何组合拆分视图控制器:

**************++++++++++++++++++
*            *                 +
*            *                 +
*   master   *      detail     +
*    view    *       view      +
* controller *    controller   +
*            *                 +
*            *                 +
**************++++++++++++++++++

但是!

在iphone上它显示如下(iPhone6 +横向除外)

****************
*++++++++++++++*
*+            +*
*+            +*
*+            +*
*+   detail   +*
*+    view    +*
*+ controller +*
*+            +*
*+            +*
*++++++++++++++*
****************

ShowsegueShow detail segue都是iOS8& Xcode6,它们被称为adaptative segues,它们的行为会有所不同,具体取决于设备类型或方向。

基本上,Show segue和显示细节segue似乎在iPhone上做同样的事情,因为没有太多空间可以并排显示视图控制器。

从技术上讲,在您返回导航之前,您不会多次提供详细信息。只有主视图控制器应该执行显示详细信息segues,详细视图控制器应该是导航树中的叶子(但不禁止将navigationVC用作叶子;)

希望它有所帮助。

答案 1 :(得分:2)

您可以使用此方法从屏幕上实际显示该视图控制器的过程中分离显示视图控制器的需要。

使用此方法,视图控制器无需知道它是嵌入在导航控制器还是拆分视图控制器中。它为两者调用相同的方法。 UISplitViewController和UINavigationController类重写此方法并根据其设计处理演示文稿。例如,导航控制器会覆盖此方法并使用它将vc推送到其导航堆栈。

表格Apple UIKit Documentation