Answers:
甲推Segue公司是加入另一VC到导航堆栈。假定发起推送的VC与要添加到堆栈的VC属于同一导航控制器。内存管理不是导航控制器和深层堆栈的问题。只要您要照顾的对象可能是从一个VC传递到另一个VC,则运行时将照顾导航堆栈。参见图像以直观了解:
一个模式Segue公司仅仅是一个VC提出另一个VC模态。VC不必一定是导航控制器的一部分,并且以模态呈现的VC通常被认为是呈现(父)VC的“子代”。模态呈现的VC通常没有任何导航栏或标签栏。呈现的VC还负责消除其创建和呈现的模态VC。
希望这可以帮助。
Swift 3.0和XCode 8.2.1更新
1.推送Segue
Push segue已重命名为Show segue。要创建推送选择,需要将父视图控制器嵌入导航控制器中。导航控制器提供导航栏。将两个视图控制器通过推键连接在一起后,子视图控制器将自动在顶部具有导航栏。子视图控制器将添加到导航堆栈的顶部。
Push segue还提供默认功能。子视图控制器将具有一个后退按钮,可让您返回到父视图控制器。您也可以向右滑动以弹出子视图控制器。推送搜索的动画就像水平滑动页面。
尽管允许从不在导航控制器中的视图控制器进行推送选择,但这样做会丢失所有功能,如导航栏,动画,手势等。在这种情况下,您应该先将父视图控制器嵌入导航视图控制器中,然后对子视图控制器进行推送选择。
2.模态赛格
另一方面,模态选择(即模态存在)在当前视图控制器上呈现。子视图控制器将不会继承导航视图控制器,因此,如果您从带有导航视图控制器的视图控制器中呈现模式选择,导航栏将丢失。您必须再次将子视图控制器嵌入导航控制器中,如果需要返回,则启动一个全新的导航堆栈。如果要返回到父视图控制器,则必须自己实现它并dismiss
从代码中调用。
模态segue的动画是子视图控制器将从页面底部出现。导航视图控制器在此演示中也消失了
推送视图必须内置在中navigationController
。
点击master view
,然后在菜单栏中选择:
EDITOR->embed in->navigationController
pushView
也可以不使用它navigationController
而建立,这个答案是不完整的!