弹出旧视图控制器
Posted
技术标签:
【中文标题】弹出旧视图控制器【英文标题】:Pop old viewController 【发布时间】:2017-02-09 23:06:44 【问题描述】:所以我有 3 个视图控制器(和一个导航视图控制器)。从 VC1 开始,我推送到 VC2,然后当 VC2 的场景完成时,我弹出 VC2,然后推送到 VC3。唯一的问题是用户可以看到堆栈推送/弹出。无论如何我可以推VC3然后弹出VC2而不被注意吗?我知道它是一个堆栈,因此您不一定可以像数组一样选择元素,但也许有一种方法可以从 VC3 中弹出 VC2?
我看到了一些 *** 资源,但都是 2011-2014 年的旧语法,并且非常过时。有人有什么想法吗?
【问题讨论】:
将 VC2 留在原处,然后按 VC3。但是当你想离开 VC3 时,弹出到 VC1。你会得到同样想要的效果。 顺便说一句 - 2011-2014 年的解决方案仍然有效。只需根据需要转换为 Swift 3。 我会这样做的。但我也需要忽略 VC2 中呈现的场景。当我在 10 分钟前发布此消息时,它似乎可以正常工作,但现在我已经提高了音量,但它没有。我应该这样做:self.viewcontroller?.presentScene(nil) 然后推送到 VC3? 【参考方案1】:是的,你可以。您可以使用setViewControllers:animated:
方法。像这样:
navigationController?.setViewControllers([vc1, vc3], animated: true)
这将在从堆栈中删除 vc2
并将其替换为 vc3
时为推送设置动画。更多关于方法here的信息。
更新:
如果您在 v2
中没有对 vc1
的引用(而且您可能没有),您可以这样做:
navigationController?.setViewControllers(navigationController!.viewControllers.first!, vc3], animated: true)
哦,如果您希望在没有任何动画的情况下推送 vc3
,那么显然,只需使用 animated: false
调用该方法即可。
【讨论】:
以上是关于弹出旧视图控制器的主要内容,如果未能解决你的问题,请参考以下文章