如何弹出除一个之外的所有视图控制器?

How to pop all view controllers except one?

让我有FirstViewController。从 FirstViewController,用户打开 模态 UINavigationController(rootViewController: SecondViewController())。从 SecondViewController 开始,用户可以使用 pushViewController 方法更进一步。在这次旅行中,用户来到 FifthViewController,其中关闭按钮作为 leftBarButtonItem 存在。按下时,我想显示 FirstViewController,而不是 SecondViewController。如何使用最佳实践实现这一目标?

我的想法: 从 FifthViewController 开始,可以使用 popToRootViewController 方法。它将显示 SecondViewController。在 SecondViewController 中,我需要以某种方式处理它(我不知道如何处理)并将其关闭。但我不认为这种方法是正确的。此外,此方法很长,因为显示了 SecondViewController(这可能是可以避免的)。那么,最好的方法是什么?

您可以在 navigationController?.viewControllers 中找到导航堆栈。取你要找的viewController,用

navigationController?.popToViewController(someViewController, animated: true)

回去。

您需要做的就是对导航控制器的任何子项调用 self.dismiss。这将删除 UINavigationController 中所有推送的视图控制器并关闭 UINavigationController 本身。