有人能给我解释一下modal和pushsegue的确切区别吗?
我知道,当我们使用push时,segue会被添加到堆栈中,所以当我们继续使用push时,它会继续占用内存?
有人能告诉我这两个是如何实现的吗?
只需CTRL click并拖动到目的地即可创建modal段,但当我使用push时,我的应用程序崩溃。
我正从一个按钮按到一个有UIViewController的UINavigationController。
下面是另一个VC加推栈的导航。你认为这是一本VC originates推部分相同的导航控制器,VC是被添加到堆栈所属。内存管理是不是一个问题与导航控制器和深栈。你长的时间,以从一个对象,你可能被传递到另一个VC运行库将照顾,在导航的堆栈。看到的图像是视觉指示。
下面是一个模态呈现另一个VC VC生产模式。《Don’t是一个SVC控制器部分和导航模式被普遍认为是你提出的是"孩子"(母)递呈的VC。提出的模型通常是没有任何的VC标签导航酒吧或酒吧。你是负责的,也dismissing呈递的VC和创建它的模态模型。
希望这帮助。
- @艾杰谢谢你的解释。还有一个问题,我什么时候必须使用模式,什么时候使用推送信号?
- 通常,当您想要显示摘要视图的详细视图时,使用导航控制器和推送段。如果"父"视图与"子"视图的数据关系不大,则使用模态。模式视图的一个好例子是登录视图。就数据而言,登录视图实际上与"父"视图没有任何关系。
- 模态视图控制器是否可以调用另一个模态视图控制器?
- @T.J.是的,你可以创建"模型链"。沿链解除一个VC将解除链上的所有VC-用户仅看到顶部VC解除(当启用动画时)。就像导航控制器。
- 我不认为这是父母和孩子的关系。是主持人和主持人。
- 有没有办法让模态视图控制器有导航栏?
- 是的。只要您的segue是模态的,在故事板中,您将看到导航栏不是继承的。因此,只需单击模式链的第一个vc,然后单击菜单编辑器->嵌入->导航控制器。这将为您设置一个导航控制器,该控制器将是所有模式链的通用控制器。不是说此时只有用于显示导航控制器的SEgue是"模态"的,而您模态链中的所有SEgue都必须是"推送"的SEgue。
- 如果它是模态segue,模态呈现的vc是否有方法在其viewdidload方法中了解其呈现者?我有一个例子,展示的VC有一个导航栏。呈现VC属于选项卡栏。在呈现的vc的viewdidLoad方法self.presentingView控制器中,指向选项卡栏控制器(这让我感到惊讶),我无法找到/访问呈现的vc作为其属性之一。
- 只有当与之隔离的VC使用导航控制器时,才能使用推送。尝试从未嵌入导航控制器的VC中推送,它将引发异常。因此,这实际上与父级和子级之间数据连接的紧密程度无关,它只与是否使用导航控制器来管理VC有关。使用Segues(使用模态转换)可以手动执行完全相同的操作。
- 这是给定的,但是否使用导航堆栈的决定受要显示的数据类型和层次结构的影响。请阅读我在2012年2月22日的评论。
- @Randymarsh你是什么意思把一个风险投资家解雇了?假设A->B->C都使用模态分段。在我们的测试中,解雇C并不能同时解雇B;它只会解雇C。此外,你如何区分一路解雇到根(即A)和只解雇顶级VC(即解雇回B,而不是A)?
斯威夫特和Xcode 3.0更新2
1。推下
下面的节目已经被推renamed如下。创建省级以下的推,父视图控制器是嵌入式导航控制器的需要。该控制器提供了导航的导航栏。一旦你连接两个视图控制器和视图控制器的推下,孩子会自动为导航栏上的蛛网膜下腔出血。孩子将由视图控制器在线顶级导航堆栈。
还提供了是默认的推送功能。孩子将有一个视图控制器的"后退"按钮,把你背到父视图控制器。你也可以偷孩子的权利弹出视图控制器。以下是该动画的页面就像推滑动水平。
而你可以做如下视图控制器推从导航控制器是不在,你将失去所有的动画导航栏的功能一样,手势等,当你的操作系统。在这个案例,你应该将你的父视图控制器在导航视图,控制器使第一,然后推到子视图跟踪控制器的设计问题。
2。模态跟踪
模态(即现在遵循的模式),是在其他的手上,作为当前的视图控制器。孩子将不会继承视图控制器的控制器操作系统的导航视图的导航栏将丢失,如果你遵循目前的模型视图控制器和从控制器的导航视图。你有一个孩子视图控制器嵌入到导航控制器和启动了全新的导航栈如果你要回来。如果你想要得到回到父视图控制器,你要实现自己dismiss)和从代码调用。
动画模态视图控制器遵循的是,孩子将吃上从底部的页面。在导航视图控制器是本演示也极速
在推navigationController视图必须内置在。
你的master view点击,然后选择菜单栏中:
1
| EDITOR->embed in->navigationController |
- 错了,没有EDOCX1[1]也可以建立EDOCX1[0],这个答案是不完整的!
这是一推推控件使用自定义脚本和遵循的方法
navigate通路和模态视图是没有用的故事。
- 如何在不使用故事板的情况下创建模式segue?
- @Jianpx:只有当你使用故事板的时候,你才能继续。否则,可以使用导航控制器或PresentModalView控制器在视图之间切换。
- @Pushkraj谢谢。那么你的意思是没有办法用代码来创建segue吗?
- @Jianpx:不需要。只有在使用故事板时才需要segue。