如果我使用 unwindSegue 从屏幕 A 到 B 再到 C 回到 B,我如何 return 到我的主显示器 (A)

How do I return to my primary display (A) if I go from screen A to B to C back to B using unwindSegue

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

我 运行 遇到的问题是,如果我从 Page APage B 再到 Page C 回到 Page B,当我尝试关闭 Page B,它会在关闭返回 page A.

之前短暂显示 Page C

所有这些都在单独的 viewcontrollers 上,我只是每次都以模态方式呈现所有这些

我已经尝试在 Swift 3 中使用 Unwind Segues Step-by-Step Create Unwind Segues 了解我做错了什么,但是根据我对他们的阅读(以及我对 Swift 的有限了解),none 他们中的页面然后尝试关闭。他们都从 1 -> 2 -> 3 回到 1 而没有回到 page 2.

的中间步骤

@IBAction func close (_ unwindSegue: UIStoryboardSegue){} 是我一直在使用的 unwindSegues,将它们链接到我的 Exit 占位符。这是在 Pages B and C

上完成的

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

谢谢!

我不太明白你的问题。但我猜你的问题是当你从 C 回到 B 时,你使用了 present 而不是 dismiss。

问题描述似乎很混乱。

不确定,但也许您在同一个后退按钮上错误地添加了页面 B -> C 的转场。请也检查一下。

我在 GitHub 上创建了 SimpleUnwindExample 项目。希望它能帮助解决您的问题。

存储库 Link:https://github.com/harshal-wani/SimpleUnwindExample

干杯!

抱歉,我不太清楚你的问题。到目前为止,我明白如果你想从 C 回到 B View Controller ,那么你可以做到只需使用

self.dismiss(animated: false, completion: nil)

在您的退出按钮操作中。希望它会有所帮助。

你说:

when I tap on the back button on page C -> B it shows that I trigger an Action that presents Modally (if that helps)

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

A » B1 » C » B2

不过,如果您成功地从 C 到 B dismissed/unwound,那么您最终将在视图控制器层次结构中只有 A 和 B:

A » B

然后,当 B 到 dismiss/unwind 到 A 时,C 早就消失了,你不可能在动画中看到它。


如果您使用的是 unwind segues,我建议视图控制器 A 有一个像这样的 unwind 动作:

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

并且视图控制器 B 可以像这样进行展开操作:

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

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

只要确保您永远不会 present/show 当您想在视图控制器层次结构中向后移动时。使用 unwind segues,或 dismiss/pop 视情况而定。