首页 > 解决方案 > 在 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

  1. self.performSegue(withIdentifier: "unwindToA", sender: self)
  2. self.dismiss()(不带导航控制器)
  3. self.navigationController?.popViewController(animated: true)(带导航控制器)

我可以知道,我们该如何选择彼此?在这种简单的情况下,还有什么理由继续使用 unwind segue?

标签: iosswift

解决方案


unwind segue 的重点是它不知道我们是如何到达这里的。它会自动做正确的事情:

• 如果我们通过 push 到达这里,unwind segue 就会弹出。

• 如果我们通过展示到达这里,那么放松的转场就会消失。

因此,即使是退一步,它也是强大的。

此外,与调用 pop 或 dismiss 不同,unwind segue 是segue。因此,它可以通过没有代码的按钮点击来触发;并且prepare(forSegue:)有效,因此您可以沿层次结构向后传递信息。


推荐阅读