Gau*_*oni 177 objective-c storyboard ios swift
有人可以向我解释modal
和push
segue 之间的确切区别是什么?
我知道当我们使用push
segue时push
会将其添加到堆栈中,所以当我们继续使用它时会不断占用内存?
有人可以告诉我这两个是如何实现的吗?
Modal
segues可以简单地创建ctrl-click并拖动到目标但是当我使用push
我的应用程序崩溃时这样做.
我从一个按钮来推动UINavigationController
,有一个UIViewController
.
LJ *_*son 173
甲推Segue公司是加入另一VC到导航堆栈.这假设发起推送的VC是添加到堆栈的VC所属的同一导航控制器的一部分.内存管理不是导航控制器和深层堆栈的问题.只要您正在处理可能从一个VC传递到另一个VC的对象,运行时就会处理导航堆栈.查看图像以获取视觉指示:
一个模式Segue公司仅仅是一个VC提出另一个VC模态.VC不必是导航控制器的一部分,并且以模态方式呈现的VC通常被认为是呈现(父)VC的"子".模态呈现的VC通常没有任何导航栏或标签栏.呈现VC还负责解雇它创建和呈现的模态VC.
希望这可以帮助.
Fan*_*ing 20
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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
109877 次 |
最近记录: |