繁体   English   中英

Storyboard中的Modal和Push segue有什么区别?

[英]What is the difference between Modal and Push segue in Storyboards?

有人可以向我解释一下modalpush segue之间的确切区别是什么?

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

有人可以告诉我这两个是如何实现的吗?

只需按住Ctrl键并拖动到目标即可创建Modal segue,但是当我使用push我的应用程序崩溃时。

我正从按钮推送到具有UIViewControllerUINavigationController

推送Segue正在向导航堆栈添加另一个VC。 这假设发起推送的VC是添加到堆栈的VC所属的同一导航控制器的一部分。 内存管理不是导航控制器和深层堆栈的问题。 只要您正在处理可能从一个VC传递到另一个VC的对象,运行时就会处理导航堆栈。 查看图像以获取视觉指示: NavStack

模态Segue只是一个以模态方式呈现另一个VC的VC。 VC不必是导航控制器的一部分,并且以模态方式呈现的VC通常被认为是呈现(父)VC的“子”。 模态呈现的VC通常没有任何导航栏或标签栏。 呈现VC还负责解雇它创建和呈现的模态VC。

希望这可以帮助。

Swift 3.0和XCode 8.2.1更新

1.推Segue

Push segue已重命名为Show segue。 要创建push segue,父视图控制器需要嵌入到导航控制器中。 导航控制器提供导航栏。 一旦用push segue连接两个视图控制器,子视图控制器将自动在顶部有导航栏。 子视图控制器将添加到导航堆栈的顶部。

在此输入图像描述

Push segue还提供默认功能。 子视图控制器将有一个后退按钮,可以返回到父视图控制器。 您也可以向右滑动以弹出子视图控制器。 push segue的动画就像水平滑动页面一样。

在此输入图像描述

虽然您可以从不在导航控制器中的视图控制器进行推送segue,但是当您这样做时,您将丢失所有功能,如导航栏,动画,手势等。 在这种情况下,您应首先将父视图控制器嵌入导航视图控制器中,然后将push segue嵌入到子视图控制器中。

在此输入图像描述

2.模态争论

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

在此输入图像描述

模态segue的动画是子视图控制器将从页面底部出现。 导航视图控制器也在此演示中消失了

在此输入图像描述

推送视图必须在navigationController构建。

单击master view ,然后在菜单栏中选择:

EDITOR->embed in->navigationController

这是为故事板使用自定义推送和segue方法推动控件 故事板

Modal是在不使用Storyboard的情况下浏览视图的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM