Ios 在使用推送序列之前,检查是否可以使用展开序列

Ios 在使用推送序列之前,检查是否可以使用展开序列,ios,storyboard,uistoryboard,segue,uistoryboardsegue,Ios,Storyboard,Uistoryboard,Segue,Uistoryboardsegue,在使用segues的导航中,我们可以从根控制器推送控制器a或B 从A我们可以推C,它可以推B,B以后可以放回到A来重新开始这个过程 从B我们可以推A,A可以推C,C以后可以放回到B来重新启动进程 在B中,我们有一个按钮,上面写着“转到A”,该按钮必须根据情况松开或按下控制器A 在执行推送序列之前,如何轻松知道是否可以放松? 现在,我使用navigationController数组来检查前一个控制器是否为C,以便推送或释放。我想知道使用segues的此类循环的通用解决方案,例如: 如果B可以展开

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

从A我们可以推C,它可以推B,B以后可以放回到A来重新开始这个过程

从B我们可以推A,A可以推C,C以后可以放回到B来重新启动进程

在B中,我们有一个按钮,上面写着“转到A”,该按钮必须根据情况松开或按下控制器A

在执行推送序列之前,如何轻松知道是否可以放松?

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

如果B可以展开到A,则展开否则推A


因此,问题是,如何检查B是否可以在不访问navigationController阵列的情况下解绑到A?

以下是我针对Swift应用程序的通用解决方案:

  • 假设UINavigationController包含
  • 在要展开到的每个XXX中定义
    unwindToXXX:
    方法
  • 在每个可以展开或推送到XXX的YYY中,定义分段
    unwindToXXX
    showXXX
然后您只需调用
gotoController(“unwindtoxx”、“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)
    }
}

你有没有找到解决这个问题的方法?遗憾的是,没有,我必须实施一个解决方案,在B中设置一个“unwindMode”,然后,当它想要呈现一个视图时,它会检查使用推送序列或展开序列的模式,为什么不简单地使用popToRootViewController,因为据我所知,这里的目的是导航回根视图控制器。viewControllerForUnwindSegueAction在iOS 9.0中不推荐使用。