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

时间:2014-03-14 13:44:40

标签: ios storyboard uistoryboard segue uistoryboardsegue

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

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

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

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

diagram

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

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

如果 B可以展开到 然后展开其他推送A

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

1 个答案:

答案 0 :(得分:0)

这是我对Swift应用程序的一般解决方案:

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

然后你可以简单地拨打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)
    }
}