故事板中的Modal和Push segue有什么区别?

有人可以向我解释modalpush塞格之间的确切区别吗?

我知道,当我们使用push ,segue会被添加到堆栈中,所以当我们继续使用push它会占用内存?

有人可以告诉我如何实施这两个?

Modal segues可以创build简单的按住Ctrl键并拖动到目的地,但当我这样做push我的应用程序崩溃。

我从button推到具有UIViewControllerUINavigationController

Segue推动另一个VCjoin导航堆栈。 这假定发起推送的VC是被添加到堆栈的VC所属的同一导航控制器的一部分。 内存pipe理不是导航控制器和深层堆栈的问题。 只要你照顾的对象,你可能会从一个VC传递到另一个,运行时将照顾导航堆栈。 看到图像的视觉指示: NavStack

一个模态Segue只是一个VC模态地呈现另一个VC。 风险投资并不一定是导航控制器的一部分,虚拟地呈现的风险投资通常被认为是呈现(父)风险投资的“孩子”。 模态提供的VC通常是没有任何导航栏或标签栏。 提交VC也负责解除其创build和呈现的模态VC。

希望这可以帮助。

推视图必须在navigationController构build。

点击你的master view ,然后在菜单栏中select:

 EDITOR->embed in->navigationController 

Swift 3.0和XCode 8.2.1更新

推Segue

推塞格已被重命名为显示塞格。 为了创buildpush segue,父视图控制器需要被embedded到导航控制器中。 导航控制器提供导航栏。 一旦你连接两个视图控制器推push segue,子视图控制器将自动具有顶部导航栏。 子视图控制器将被添加到导航堆栈的顶部。

在这里输入图像描述

推塞格还提供了默认function。 子视图控制器将有一个返回button,让你回到父视图控制器。 您也可以向右滑动以popup子视图控制器。 push segue的animation就像水平滑动页面一样。

在这里输入图像描述

虽然您可以通过不在导航控制器中的视图控制器进行推送,但当您这样做时,您将失去导航栏,animation,手势等所有function。 在这种情况下,您应该首先在导航视图控制器中embedded您的父视图控制器,然后再将其推入子视图控制器。

在这里输入图像描述

2.模态塞格

另一方面,模态(即,模态地)呈现在当前的视图控制器上。 子视图控制器将不会inheritance导航视图控制器,因此如果您使用导航视图控制器显示来自视图控制器的模态segue,导航栏将会丢失。 您必须再次在导航控制器中embedded子视图控制器,并在需要时启动全新的导航堆栈。 如果你想回到父视图控制器,你必须自己实现这个,并调用dismiss代码。

在这里输入图像描述

模态segue的animation是子视图控制器将从页面底部出现。 导航视图控制器也没有在这个演示

在这里输入图像描述

这是推动控制使用自定义推和segue方法的故事板 故事板

而莫代尔是在不使用Storyboard的情况下浏览视图的方法。