如果我使用 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 C
或 page A
。当我去 page C
时,我可以返回 page B
或 page A
。
我 运行 遇到的问题是,如果我从 Page A
到 Page 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
视情况而定。
我目前正在学习如何在 Swift 中编程并制作了 3 个不同的页面; Pages A, B, and C
。从 page A
,我可以导航到 page B
,从 page B
,我可以转到 page C
或 page A
。当我去 page C
时,我可以返回 page B
或 page A
。
我 运行 遇到的问题是,如果我从 Page A
到 Page 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
视情况而定。