在使用推送segue之前,请检查是否可以使用展开segue

Nex*_*rlg 7 storyboard ios uistoryboard segue uistoryboardsegue

在使用segue的导航中,从根控制器我们可以推送控制器A或B.

从A我们可以推C,它可以推B,以后可以放松到A重启过程.

从B我们可以推A,它可以推C,后来可以放松到B重启过程.

在B中,我们有一个按钮,上面写着"转到A",它必须根据场景放松或推动控制器A.

图

如果我能在预先形成push segue之前放松,我怎么能轻易地知道?

现在我使用navigationController数组来检查前一个控制器是否为C来推或放.我想知道使用segues的这种循环的通用解决方案,例如:

如果B可以放松到A 然后放松其他推A

所以,问题是,如何检查B可以在不访问navigationController数组的情况下放松到A

Ale*_*ylo 0

这是我针对 Swift 应用程序解决此问题的通用解决方案:

  • 假设 UINavigationController 包含
  • unwindToXXX:在您想要展开的每个 XXX 中定义方法
  • 在每个可以展开或推送到 XXX 的 YYY 中,定义 seguesunwindToXXXshowXXX

然后你可以简单地调用gotoController("unWindToXXX", "showXXX")给定的

func gotoController(unwind: String, show: String) {
    let action = Selector(unwind + ":")
    if let target = navigationController?.viewControllerForUnwindSegueAction(action, fromViewController: self, withSender: self)
    {
        assert(target.canPerformUnwindSegueAction(action, fromViewController: self, withSender: self))
        performSegueWithIdentifier(unwind, sender: self)
    } else {
        performSegueWithIdentifier(show, sender: self)
    }
}
Run Code Online (Sandbox Code Playgroud)