在UINavigationController堆栈中"弹出"多个视图控制器器,可以使用以下方法:
popToViewController:animated:
方法func popToViewController(_ viewController: UIViewController, animated: Bool) -> [UIViewController]?
该方法会将当前导航控制器的堆栈中的视图控制器弹出,直到找到指定的视图控制器,并返回一个包含被弹出视图控制器的数组。
示例代码:
if let viewControllerToPopTo = self.navigationController?.viewControllers.first(where: { $0 is YourViewController }) {
_ = self.navigationController?.popToViewController(viewControllerToPopTo, animated: true)
}
setViewControllers:animated:
方法func setViewControllers(_ viewControllers: [UIViewController], animated: Bool)
该方法可以用来设置当前导航控制器的堆栈中的视图控制器数组,从而实现弹出多个视图控制器的效果。
示例代码:
if let viewControllerToPopTo = self.navigationController?.viewControllers.first(where: { $0 is YourViewController }),
var viewControllers = self.navigationController?.viewControllers {
if let index = viewControllers.firstIndex(of: viewControllerToPopTo) {
viewControllers.removeSubrange(index+1..<viewControllers.count)
self.navigationController?.setViewControllers(viewControllers, animated: true)
}
}
在这两种方法中,第一种方法更加简单,而第二种方法则更加灵活,可以实现更复杂的操作。
领取专属 10元无门槛券
手把手带您无忧上云