ios - 在 unwind segue、dismiss 和 popViewController 之间选择以“关闭”当前视图控制器
问题描述
对于当前的导航模式
A -> B -> C
我的理解是,如果我们想从 C 直接回到 A,使用 unwind segue 将是最合适的方式。
// Execute this code in C
self.performSegue(withIdentifier: "unwindToA", sender: self)
但是,一个简单的导航模式呢?
A -> B
总共有3种方式,从B回到A
self.performSegue(withIdentifier: "unwindToA", sender: self)
self.dismiss()
(不带导航控制器)self.navigationController?.popViewController(animated: true)
(带导航控制器)
我可以知道,我们该如何选择彼此?在这种简单的情况下,还有什么理由继续使用 unwind segue?
解决方案
unwind segue 的重点是它不知道我们是如何到达这里的。它会自动做正确的事情:
• 如果我们通过 push 到达这里,unwind segue 就会弹出。
• 如果我们通过展示到达这里,那么放松的转场就会消失。
因此,即使是退一步,它也是强大的。
此外,与调用 pop 或 dismiss 不同,unwind segue 是segue。因此,它可以通过没有代码的按钮点击来触发;并且prepare(forSegue:)
有效,因此您可以沿层次结构向后传递信息。
推荐阅读
- python - PyOpenGL 相机系统
- javascript - {{ }} 中的网络抓取响应
- sql - 如何使用 bcp 命令将文本文件读入 @table 变量
- c - 仅当不存在 extern 关键字时,在头文件中定义变量才有效?
- css - 如何将一列的单元格与响应表中的其他列对齐?
- vue.js - 屏蔽整个 Vue.js 应用程序及其子目录到另一个页面子目录
- python-3.x - Python 3 柱状转置解密
- python - 如何在没有太多包袱的情况下使用`assertEqual()` [或等价物]?
- python-3.x - 在文件夹中查找重复的文件名并将它们移动到另一个文件夹
- c# - 在 C# 中编写新行的最佳实践