如何在堆栈中打开屏幕而不是在IOS中创建新屏幕

San*_*mar 1 xcode applet ios swift

我遇到一个问题,如果一个Screen(ViewController)已经在堆栈中,那么它可以再次打开.设V1是视图控制器.我从V1到v2转到V1-> V2而不是V2-> V3.现在我想从V3打开V1.我正在使用NavigationViewController打开屏幕 -

let help = V1(nibName : "V1" , bundle:  nil)
navViewcontroller?.navigationController?.pushViewController(help, animated: true)
Run Code Online (Sandbox Code Playgroud)

这会创建一个新的V1屏幕我已经无法使用V1了.

请回答这是怎么回事,抱歉错误.

Muk*_*esh 6

如果您确切知道堆栈中视图控制器的索引,那么您可以简单地使用:

let viewController = navigationController?.viewControllers[index]
navigationController?.popToViewController(viewController, animated: true)
Run Code Online (Sandbox Code Playgroud)

否则,您可以遍历视图控制器并找到它:

for viewController in (navigationController?.viewControllers)! {
    if viewController is LoginMobileVC { // LoginMobileVC is your view controller class
        navigationController?.popToViewController(viewController, animated: true)
        break
    }
}
Run Code Online (Sandbox Code Playgroud)