我遇到的问题是,如果屏幕(ViewController)已经在堆栈中,那么它可以再次打开。设V1是视图控制器。我从V1到v2作为V1-> V2而不是V2-> V3。现在我想从V3打开V1。我使用NavigationViewController打开屏幕 -
let help = V1(nibName : "V1" , bundle: nil)
navViewcontroller?.navigationController?.pushViewController(help, animated: true)
这会创建一个新的V1屏幕我已经无法使用V1了。
请回答如何可能,抱歉有错误。
答案 0 :(得分:6)
如果您确切知道堆栈中视图控制器的索引,那么您只需使用:
let viewController = navigationController?.viewControllers[index]
navigationController?.popToViewController(viewController, animated: true)
否则,您可以遍历视图控制器并找到它:
for viewController in (navigationController?.viewControllers)! {
if viewController is LoginMobileVC { // LoginMobileVC is your view controller class
navigationController?.popToViewController(viewController, animated: true)
break
}
}
答案 1 :(得分:0)
这样做,
if let navController = self.navigationController, let VC1 = navController.viewControllers.first {
_ = self.navigationController?.popToViewController(VC1 as! YourVC, animated: true)
}
或
self.navigationController.popToRootViewController(animated: true)
// 注意:如果VC1是基本导航控制器,这些将起作用