pushViewController 和 showViewController 的区别

Difference between pushViewController and showViewController

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

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

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

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

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

但是!

在 iPhone 上它是这样显示的(iPhone6+ 横向除外)

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

ShowsegueShow detail segue 都是 iOS8Xcode6 的新内容,它们被称为 adaptative segues,它们的行为因设备类型而异或方向。

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

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

希望对您有所帮助。

您使用此方法将显示视图控制器的需要与在屏幕上实际呈现该视图控制器的过程分离。

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

表格Apple UIKit Documentation