情节串连图板中的模态转换和推送转换有什么区别?

有人能给我解释一下 modalpush之间的确切区别吗?

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

有人能告诉我这两个是怎么实现的吗?

Modal接口可以通过简单的 ctrl-click和拖动到目的地来创建,但是当我用 push这样做时,我的应用程序会崩溃。

我正在从一个按钮推到一个 UINavigationController有一个 UIViewController

118321 次浏览

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

模式 Segue 模式 Segue 模式 Segue 模式只是一个 VC 模式化地呈现另一个 VC。VC 不一定是导航控制器的一部分,模态化呈现的 VC 通常被认为是呈现(父) VC 的“子”。模态显示的 VC 通常没有任何导航栏或标签栏。展示 VC 还负责解散它创建和展示的模态 VC。

希望这个能帮上忙。

推送视图必须在 navigationController中构建。

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

EDITOR->embed in->navigationController

这是使用故事板的自定义 push 和 segue 方法来推动控件Story Board

Modal 是一种不使用情节串连图板浏览视图的方式。

Swift 3.0和 XCode8.2.1更新

1. 按 Segue

推进接续被重新命名为 表演接续。为了创建推动切换,需要将父视图控制器嵌入到导航控制器中。导航控制器提供导航栏。一旦你连接了两个视图控制器与推动切换,子视图控制器将自动导航栏在顶部。子视图控制器将添加到导航堆栈的顶部。

enter image description here

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

enter image description here

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

enter image description here

2. 模式转换

另一方面,在当前视图控制器上显示模态转换(即模态存在)。子视图控制器不会继承导航视图控制器,因此如果您使用导航视图控制器显示视图控制器的模态切换,则导航栏将丢失。您必须再次将子视图控制器嵌入到导航控制器中,并启动一个全新的导航堆栈,如果您想要它回来的话。如果您想回到父视图控制器,您必须自己实现它,并从代码中调用 dismiss

enter image description here

模态转换的动画是子视图控制器将从页面的底部出现。在这个演示中,导航视图控制器也不见了

enter image description here