放松 Segue 还是别的啥?

Posted

技术标签:

【中文标题】放松 Segue 还是别的啥?【英文标题】:Unwind Segue or something else?放松 Segue 还是别的什么? 【发布时间】:2018-04-06 09:06:13 【问题描述】:

我正在构建一个带有 6 个 ViewController 的应用程序(我们称它们为 A、B、C、D、E 和 F)。 A 是“菜单”视图控制器。

您可以从 A 到达 B 或 F。 您可以从 B 返回 A 或继续前往 C。 从 C 你可以回到 B 或继续到 D。 从 D 你可以回到 C 或继续到 E。 从 E 你不能回到 D,但你可以回到 A 或 B。 从F只能回到A。

我的问题是:哪些转场应该是“显示”转场,哪些转场应该是“展开”转场?还是我应该做另一件事?

【问题讨论】:

节目继续进行。放松倒退。 【参考方案1】:

显示 - 前进

放松 - 向后

所以例如-

当从 A -> B 移动时 使用显示

现在回来时,即 B -> A 使用放松。

【讨论】:

是的,但您可以放松到一个特定的视图控制器,对吧?或者是否有可能从 E 放松到 A 和 B? 你可以放松到任何视图控制器,只要它回到层次结构中 展开过程会自动获取上一个实例,所以你会自动返回。 Apple 技术说明中的描述相同 - developer.apple.com/library/content/technotes/tn2298/… 好吧,我想我太不具体了:是否可以从一个 ViewController 中获得 2 个展开转场?例如,有一个从 E 到 A 的展开 segue 和另一个从 E 到 B 的展开 segue? 你可以参考这篇 SO 帖子 - ***.com/questions/12561735/…【参考方案2】:

如果你使用“show”segue,那么你将使用 unwind 返回到视图层次结构中之前的任何 ViewController,但是如果你使用“present modalally”,那么你必须使用dismiss 来返回。尽管通过 unwind 您可以从最新的 ViewController 转到第一个最多的 ViewController,但是通过解除只有最新的 ViewController 会被解除。只要你为每一个都创建一个@IBAction 并提供标识符,你就可以有尽可能多的展开。

【讨论】:

以上是关于放松 Segue 还是别的啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何放松segue退后几步?

segue放松后,TableView消失

放松Segue隐藏标签栏

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

在 unwind segue 之后执行 push segue

如何以编程方式执行Unwind segue?