如何打开堆栈中已有的屏幕而不是在 IOS 中创建新屏幕
How to open screen already in stack instead of creating new one in IOS
我遇到一个问题,如果屏幕 (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。
请回答怎么可能,如有错误请见谅。
这样做,
if let navController = self.navigationController, let VC1 = navController.viewControllers.first {
_ = self.navigationController?.popToViewController(VC1 as! YourVC, animated: true)
}
或
self.navigationController.popToRootViewController(animated: true)
//注意:如果 VC1 是基本导航控制器,这些将起作用
如果您确切知道堆栈中视图控制器的索引,那么您可以简单地使用:
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
}
}
我遇到一个问题,如果屏幕 (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。
请回答怎么可能,如有错误请见谅。
这样做,
if let navController = self.navigationController, let VC1 = navController.viewControllers.first {
_ = self.navigationController?.popToViewController(VC1 as! YourVC, animated: true)
}
或
self.navigationController.popToRootViewController(animated: true)
//注意:如果 VC1 是基本导航控制器,这些将起作用
如果您确切知道堆栈中视图控制器的索引,那么您可以简单地使用:
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
}
}