【问题标题】:How to find when UIViewController is popped off the stack Swift 3如何查找 UIViewController 何时从堆栈 Swift 3 中弹出
【发布时间】:2017-08-04 05:43:40
【问题描述】:

在 UINavigationController 上,我有两个视图控制器 1 和 2。有一个从 1 到 2 的 Show segue 和一个从 2 到 1 的程序化展开 segue(控制+从场景的视图控制器图标拖动到其退出图标)。

我如何知道 2 何时即将从 UINavigationController 堆栈中弹出?

viewWillDisappear,当另一个视图被推送到 UINavigationController 堆栈时也会调用,因此它不是解决方案。我看到answer on SO 建议创建后退按钮而不是使用默认的后退按钮,但我想知道是否没有系统方法可以用来找出 UIViewController 何时从堆栈中弹出?

【问题讨论】:

  • 为什么你需要确切地知道。你不能在视图中触发某些东西会出现在其他地方吗?只是想获取上下文
  • @agibson007 我试图让场景更简单,但我的情况是:我在一个 UINavigationController 上有 9 个 UIViewController。如果用户已登录,则在第 4 中,转到第 8,否则转到第 5。在第 8 个我有一个 tableView,如果第 1 行被触摸到第 9 个,否则到第 10 个。在第 10 中,当我触摸返回按钮(视图即将消失)时,我需要知道是否应该根据之前在第 8 中选择的行选择第 9 或第 8。 viewWillDisapper 在 UINavigationController 被推送或弹出时都会被调用,因此将它与 isMovingFromParentViewController 结合使用适用于我的情况。

标签: swift uiviewcontroller unwind-segue


【解决方案1】:

我想我可能已经找到了viewWillDisappear 应该与isMovingFromParentViewController 一起使用的答案。如果这种方法容易出现错误,请随时纠正我。

override func viewWillDisappear(_ animated : Bool) {
    super.viewWillDisappear(animated)

   if self.isMovingFromParentViewController{
        self.performSegue(withIdentifier: "fromEighthToFourth", sender: self)
   }
 }

【讨论】:

  • 这是检测你被弹出的正确技术,但如果我是你,我不会用它来执行转场,因为你已经在中间了。
  • @matt 更早调用 unwind segue 的最佳选择是什么?
猜你喜欢
  • 1970-01-01
  • 2010-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多