弹出视图控制器、关闭视图控制器和使用展开转场有啥区别?

Posted

技术标签:

【中文标题】弹出视图控制器、关闭视图控制器和使用展开转场有啥区别?【英文标题】:What's the difference between popping a view controller, dismissing a view controller, and using an unwind segue?弹出视图控制器、关闭视图控制器和使用展开转场有什么区别? 【发布时间】:2017-07-26 06:16:46 【问题描述】:

我想知道是否有人可以解释何时是使用 segue 的理想时间以及弹出和关闭视图控制器与使用展开 segue 有什么区别?

【问题讨论】:

【参考方案1】:

当您呈现一个视图控制器时,您将其替换为前一个。当你推送一个视图控制器时,你会创建一个视图控制器堆栈。

所以 pop 处理一堆视图控制器,它会从堆栈中一个一个地删除视图控制器。

Dismiss 只处理单个视图控制器,它将从内存中删除当前视图控制器。

Unwind segue 可用于通过 push、modal 或 popover segues 导航回来,除此之外,您实际上不仅可以通过一个,而且可以通过一系列 push/modal/popover segues 来展开,例如只需一个展开操作即可在导航层次结构中“返回”多个步骤。

【讨论】:

【参考方案2】:

如果您使用segue 之类的东西,那么您必须在情节提要中维护它,其中推送和弹出基于UINavigationController,无需担心在情节提要中维护segues,您也​​可以熟悉XIB

PresentViewcontroller

presentViewController 是 UIViewController 的一个方法 用于呈现模态视图控制器的类。

PushViewcontroller

UINavigationController 是 UIViewController 的子类,它 管理一堆视图控制器并添加一个后退按钮等。从 UINavigationController 你可以推送一个新的控制器,然后再弹出 它,所以要回到导航中的前一个和控制器 控制器只会从左到右构建一个序列。

【讨论】:

以上是关于弹出视图控制器、关闭视图控制器和使用展开转场有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式创建展开转场[重复]

自定义模态视图的转场动画

如何在不显示中间视图的情况下通过多个视图展开

展开后执行segue

放松转场动作的第二场转场

加速转场和放松转场