【问题标题】:Push view controller, but go back to another one推送视图控制器,但返回另一个
【发布时间】:2023-03-24 15:05:01
【问题描述】:

假设在我的常规流程中,我有 VC1 -> VC2 -> VC3 -> VC4

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

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

我已经尝试过从 VC1 -> VC2 和 VC2 -> VC3 没有动画,然后 VC3 -> VC4 有动画,但是你可以快速看到 VC3,它看起来很糟糕。

有什么想法吗?

【问题讨论】:

  • 你为什么不把按钮做成一个从 V4 到 V3 的自定义 segue?
  • @CaseyWest 因为这个想法是使用导航栏上的标准后退按钮。谢谢!

标签: ios uiviewcontroller uinavigationcontroller


【解决方案1】:

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

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

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

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

【讨论】:

  • 噗噗我傻了。我也在尝试同样的想法,但在推动之前插入,我看到了故障。没想到我能做到
【解决方案2】:

你可以修改 UINavCon 的viewControllers 来实现你想要的顺序。

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

【讨论】:

  • 这行得通,但与@Derek 在您之前 3 分钟提到的技术相同。所以我接受了他的回答。不过我赞成你的!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
相关资源
最近更新 更多