ios - 如果我使用 unwindSegue 从屏幕 A 转到 B 再到 C 又回到 B,如何返回主显示器 (A)
问题描述
我目前正在学习如何用 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
toPage B
转到Page C
back to Page B
,当我尝试关闭时Page B
,它会Page C
在关闭 back to 之前短暂显示page A
。
所有这些都是分开的viewcontrollers
,我每次都以模态方式展示它们
我已经尝试在 Swift 3 中使用Unwind Segues Step-by-Step和Create Unwind Segues
来理解我做错了什么,但是从我所读到的内容(以及我对 Swift 的有限知识),没有一个他们讨论返回一个页面,然后尝试关闭。他们都是从1 -> 2 -> 3
back to 到1
没有返回到的中间步骤page 2
。
@IBAction func close (_ unwindSegue: UIStoryboardSegue){}
是我一直使用的 unwindSegues 将这些链接到我的 Exit 占位符。这是在两者上完成的Pages B and C
目前没有错误消息,它似乎可以工作,但它确实显示了不是我想要的中间屏幕。
谢谢!
解决方案
你说:
当我点击页面 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
酌情使用。
推荐阅读
- html - 我可以使此复选框隐藏/显示同一部分中但在不同类下的元素吗?
- java - VS Code 在集成终端而不是 java 的调试控制台中开始调试
- postgresql - 一个 sql 查询不应该返回空?
- neo4j - Neo4J:将数字排名添加到有序输出
- c++ - 使用 StreamReader 检查文件是否存在
- haskell - 如何解决导入 System.Random?
- firebase - 使用 Puppeteer 和 Firebase 函数减少带宽
- azure - Azure 数据块中的 Spring 版本
- python - 并行文件夹遍历 Python
- android - 模块 AppRegistry 不是一个注册的可调用模块(调用 runApplication),当将 react native 集成到现有应用程序时