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