推视图控制器,但返回另一个

时间:2018-01-05 18:13:36

标签: ios uiviewcontroller uinavigationcontroller

让我们按照我的常规流程说出来 VC1 - > VC2 - > VC3 - > VC4

但我要求当我触摸VC1上的特殊按钮时,需要转到VC4。

没问题。问题是当我点击VC4上的后退按钮时,它需要返回VC3而不是VC1。

我已经尝试过从VC1推送 - > VC2和VC2 - >没有动画的VC3再VC3 - > VC4带有动画,但你可以看到VC3的一瞥看起来很糟糕。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我认为在这种特定情况下,您可以在呈现第4个viewController后在导航控制器堆栈上插入视图控制器

if let navigationController = navigationController {
  navigationController.pushViewController(vc4, animated: true)

  let vc3Index = navigationController.viewControllers.count - 1
  navigationController.viewControllers.insert(vc3, atIndex: vc3Index)
}

当用户从VC4返回时,这应该将VC3放在下一行。未经测试的代码,顺便说一句。

答案 1 :(得分:1)

您可以修改UINavCon' viewControllers以达到您想要的顺序。

func specialButtonInVc1() {
    self.navigationController?.pushViewController(fourth, animated: true)
    self.navigationController?.viewControllers = [self, second, third,fourth]
}