【问题标题】:Unwind segue from navigation back button in Swift从 Swift 中的导航返回按钮展开 segue
【发布时间】:2014-10-11 01:57:46
【问题描述】:

我有一个设置屏幕,其中有一个表格单元格。通过单击它,我将进入另一个屏幕,用户可以在其中选择一个选项,并且我希望在按下后退按钮时将其返回到上一个视图控制器中。

我可以放置一个自定义栏按钮项,但我想使用导航栏中的后退按钮而不是视图上的自定义按钮返回父视图控制器。

我似乎无法覆盖导航返回按钮以将其指向我的展开转场动作,并且由于后退按钮没有出现在情节提要上,我无法将绿色的退出按钮拖到它上面

是否可以使用后退按钮展开 push segue?

【问题讨论】:

标签: ios iphone swift segue


【解决方案1】:

我尝试了同样的方法,但您似乎无法捕捉到标准后退按钮的操作,因此解决方案是使用自定义按钮并将其绑定到可返回上一页的 segue。

【讨论】:

    【解决方案2】:

    您可以像以前一样使用某种委托,也可以使用自定义后退按钮和展开转场。

    更好的是,您可以使用中介来处理视图控制器之间的数据传递:

    http://cocoapatterns.com/passing-data-between-view-controllers/

    【讨论】:

      【解决方案3】:

      这是我的解决方案,基于从 Blankarsch 到 StackOverflow 问题的 Objective-C 代码:How to trap the back button event

      把这段代码放在你想捕获返回按钮调用的视图控制器中:

      override func didMoveToParentViewController(parent: UIViewController?) {
          if (!(parent?.isEqual(self.parentViewController) ?? false)) {
              println("Back Button Pressed!")
          }
      }
      

      在 if 块内部,处理您需要传回的任何内容。您还需要引用回调用视图控制器,因为此时很可能 parent 和 self.parentViewController 都为零,因此您无法导航视图控制器树。

      此外,您可能只需检查 parent 是否为零,因为我还没有发现按下后退按钮不会导致 parent 为 nil 的情况。所以这样的东西更简洁一些:

      override func didMoveToParentViewController(parent: UIViewController?) {
          if (parent == nil) {
              println("Back Button Pressed!")
          }
      }
      

      但我不能保证每次都能奏效。

      【讨论】:

      • 太棒了!我想在切换到它之前拥有该控件,并且很高兴我选择了: override func willMoveToParentViewController(parent: UIViewController?) 效果同样好,并且在视图转换之前很好。再次感谢您。
      • 你忘了super.didMove(...)
      • 这里也是,@Cœur ;)
      【解决方案4】:

      具有后退按钮

      的视图控制器中执行以下操作

      斯威夫特 3

      override func didMove(toParentViewController parent: UIViewController?) {
          if !(parent?.isEqual(self.parent) ?? false) {
              print("Parent view loaded")
          }
          super.didMove(toParentViewController: parent)
      }
      

      【讨论】:

      • 如果代码不起作用,我会倾向于同意,但话又说回来,我不会发布答案。
      • 我想,应该到函数的末尾了。
      猜你喜欢
      • 2013-06-17
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 2012-11-13
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多