弹出旧视图控制器



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

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

是的,你可以。您可以使用setViewControllers:animated:方法。喜欢这个:

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

这将对推送进行动画处理,同时从堆栈中删除vc2并将其替换为 vc3 。有关该方法的更多信息,请单击此处。

更新:

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

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

哦,如果您希望在没有任何动画的情况下推送vc3那么显然,只需使用 animated: false 调用该方法即可。

最新更新