流行老 viewController

Pop old viewController

所以我有 3 个视图控制器(和一个导航视图控制器)。从 VC1 开始,我推到 VC2,然后当 VC2 的场景完成时,我弹出 VC2,然后推到 VC3。唯一的问题是用户可以看到堆栈 push/popping。无论如何我可以推送 VC3 然后弹出 VC2 而不会被注意到吗?我知道它是一个堆栈,所以您不一定能像选择数组那样选择元素,但也许有一种方法可以从 VC3 中弹出 VC2?

我看到了一些 Whosebug 资源,但都是 2011-2014 年的旧语法,非常过时。有人有什么想法吗?

是的,你可以。您可以使用 setViewControllers:animated: 方法。像这样:

navigationController?.setViewControllers([vc1, vc3], animated: true)

这将在从堆栈中删除 vc2 并将其替换为 vc3 时为推送设置动画。有关方法 here.

的更多信息

更新:

如果您在 v2 中没有对 vc1 的引用(您可能没有),您可以这样做:

navigationController?.setViewControllers(navigationController!.viewControllers.first!, vc3], animated: true)

哦,如果你想在没有任何动画的情况下推送 vc3,那么显然,只需使用 animated: false.

调用方法即可