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

时间:2019-07-04 02:16:46

标签: ios swift unwind-segue

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

但是,我遇到的问题是,当我尝试关闭{{1]时,如果我从Page APage B再到Page C回到Page B }},它会短暂显示Page B,然后再返回到Page C

所有这些都放在单独的page A上,我每次都以模态方式展示所有这些

我尝试使用Unwind Segues Step-by-Step Create Unwind Segues in Swift 3 来了解我做错了什么,但是从我读过的内容(以及我对Swift的有限了解)来看,都没有他们讨论退回一页,然后尝试关闭。它们全部从viewcontrollers回到1 -> 2 -> 3,而没有中间步骤回到1

page 2是我一直使用的unwindSegues,将这些链接链接到我的Exit占位符。这是在@IBAction func close (_ unwindSegue: UIStoryboardSegue){}

上完成的

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

谢谢!

4 个答案:

答案 0 :(得分:1)

您说:

  

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

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

  

A»B1»C»B2

但是,如果您成功地从C解散/解绕到B,则在视图控制器层次结构中最终只会得到A和B:

  

A»B

然后,当B撤消/放回A时,C早已不在,而且您无法在动画中看到它。


如果您使用的是放开脚步,我建议视图控制器A采取这样的放开动作:

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

并且视图控制器B可以具有如下展开操作:

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

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

只要确保您不希望在视图控制器层次结构中倒退就永远不会显示/显示。要么使用放松速度,要么使用dismiss / pop

答案 1 :(得分:0)

我不太了解您的问题。但是我想你的问题是,当您从C返回B时,您使用了present而不是解雇了。

答案 2 :(得分:0)

似乎很令人困惑的问题描述。

不确定,但可能是您在同一“后退”按钮上错误地从页面B-> C添加了序列。请也检查一下。

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

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

干杯!

答案 3 :(得分:0)

对不起,您的问题对我来说还不清楚。到目前为止,我了解您是否想从C回到B View Controller,那么您可以做到这一点只需使用

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

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