如何弹出除一个之外的所有视图控制器?
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 本身。
让我有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 本身。