首页 > 解决方案 > 如果我使用 unwindSegue 从屏幕 A 转到 B 再到 C 又回到 B,如何返回主显示器 (A)

问题描述

我目前正在学习如何用 Swift 编程并制作了 3 个不同的页面;Pages A, B, and C. 从 开始page A,我可以导航到page B,从 开始page B,我可以转到page Cpage A。当我去时,page C我可以回到page Bpage A

然而,我遇到的问题是,如果我从Page AtoPage B转到Page Cback to Page B,当我尝试关闭时Page B,它会Page C在关闭 back to 之前短暂显示page A

所有这些都是分开的viewcontrollers,我每次都以模态方式展示它们

我已经尝试在 Swift 3 中使用Unwind Segues Step-by-StepCreate Unwind Segues 来理解我做错了什么,但是从我所读到的内容(以及我对 Swift 的有限知识),没有一个他们讨论返回一个页面,然后尝试关闭。他们都是从1 -> 2 -> 3back to 到1没有返回到的中间步骤page 2

@IBAction func close (_ unwindSegue: UIStoryboardSegue){}是我一直使用的 unwindSegues 将这些链接到我的 Exit 占位符。这是在两者上完成的Pages B and C

目前没有错误消息,它似乎可以工作,但它确实显示了不是我想要的中间屏幕。

谢谢!

标签: iosswiftunwind-segue

解决方案


你说:

当我点击页面 C -> B 上的后退按钮时,它表明我触发了一个以模态方式呈现的动作(如果有帮助的话)

这正是问题所在。从 A 到 B 再到 C,C 不应再模态地呈现 B。您正在创建 B 的第二个新实例。您将有一个视图控制器层次结构,如下所示:

A » B1 » C » B2

但是,如果您成功地从 C 解散/解散到 B,则视图控制器层次结构中将只有 A 和 B:

A » B

然后,当 B 去解散/放松到 A 时,C 早就消失了,你不可能在动画中看到它。


如果您正在使用展开 segues,我建议视图控制器 A 具有如下展开操作:

@IBAction func unwindToA(_ segue: UIStoryboardSegue) { }

并且视图控制器 B 可以有一个像这样的展开动作:

@IBAction func unwindToB(_ segue: UIStoryboardSegue) { }

现在,当 C 想要放松回到 B 时,如果你可以使用后者的 unwind 动作。如果您想放松到 A(从 B 或 C),您可以使用前一个。

只要确保当您想在视图控制器层次结构中倒退时,您永远不会出现/显示。要么使用 unwind segues,要么dismiss/pop酌情使用。


推荐阅读