我目前正在学习如何在Swift中编程,并制作了3个不同的页面; Pages A, B, and C
。从page A
,我可以导航到page B
,从page B
,我可以导航到page C
或page A
。当我转到page C
时,可以返回到page B
或page A
。
但是,我遇到的问题是,当我尝试关闭{{1]时,如果我从Page A
到Page 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){}
当前没有错误消息,它似乎可以正常工作,但确实显示了中间屏幕,这不是我想要的。
谢谢!
答案 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)
在“退出按钮”操作中。希望它会有所帮助。