Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何打开堆栈中已有的屏幕,而不是在IOS中创建新屏幕_Ios_Swift_Xcode_Applet - Fatal编程技术网

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

如何打开堆栈中已有的屏幕,而不是在IOS中创建新屏幕,ios,swift,xcode,applet,Ios,Swift,Xcode,Applet,我面临一个问题,如果屏幕(ViewController)已经在堆栈中,那么它可以再次打开。设V1为视图控制器。我以V1->v2的形式从V1转到v2,而不是v2->V3。现在我想从V3打开V1。我正在使用NavigationViewController打开屏幕- let help = V1(nibName : "V1" , bundle: nil) navViewcontroller?.navigationController?.pushViewController(help, animated

我面临一个问题,如果屏幕(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)
}

//注意:如果VC1是基本导航控制器,这些将起作用

if let navController = self.navigationController, let VC1 = navController.viewControllers.first {
     _ = self.navigationController?.popToViewController(VC1 as! YourVC, 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
    }
}

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

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
    }
}

如何使用navigationController获取视图控制器的计数。。这样我就可以使用for循环来查找现有的one@SanjayMajoka使用
let count=navigationController?.viewControllers.count
如何使用navigationController获取视图控制器的计数。。这样我就可以使用for循环来查找现有的one@SanjayMajoka使用
let count=navigationController?.viewControllers.count
查看此链接的可能重复项。可能的副本请参见此链接。