Ios 在UINavigationController堆栈中跳过ViewController
如上图所示,我有一个视图控制器(a),带有一个导航控制器的序列。我想在离开时执行这个序列,它将我带到查看控制器(B)。我知道你们中的一些人会说,在(a)和(B)之间做一个分段,但这不是我想要的 我希望能够返回到导航控制器堆栈中的上一个视图控制器,而不是(A) 提前感谢您。您有两种选择 一,- 切换到navigationController,在B之前的VC中,设置一个标志,如在Ios 在UINavigationController堆栈中跳过ViewController,ios,swift,Ios,Swift,如上图所示,我有一个视图控制器(a),带有一个导航控制器的序列。我想在离开时执行这个序列,它将我带到查看控制器(B)。我知道你们中的一些人会说,在(a)和(B)之间做一个分段,但这不是我想要的 我希望能够返回到导航控制器堆栈中的上一个视图控制器,而不是(A) 提前感谢您。您有两种选择 一,- 切换到navigationController,在B之前的VC中,设置一个标志,如在viewDidLoad中,并按下VCB 二,- 在代码中创建navigationController let nav =
viewDidLoad
中,并按下VCB
二,-
在代码中创建navigationController
let nav = /////
nav.viewControllers = [beforeBVC,VCB]
你有两个选择
一,-
切换到navigationController,在B之前的VC中,设置一个标志,如在viewDidLoad
中,并按下VCB
二,-
在代码中创建navigationController
let nav = /////
nav.viewControllers = [beforeBVC,VCB]
您可以直接将ViewController推送到导航堆栈上
self.navigationController?.pushViewController(viewController2,动画:true)
您可以直接将ViewController推到导航堆栈上
self.navigationController?.pushViewController(viewController2,动画:true)
这只是对Shu Khan答案的修改。他的回答是正确的,我尝试了他的两种方法来实现我的要求,我成功了
但是,我发现我实际上不需要以编程方式创建导航控制器,也不需要设置标志并签入viewDidLoad
我需要做的就是在prepareForSegue函数中应用他的第二个方法
例如:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let navController = segue.destination as! UINavigationController
let BVC = UIStoryboard(name:"Main", bundle:nil).instantiateViewController(withIdentifier: "BVC")
navController.viewControllers.append(BVC)
}
所有的功劳都归于施汗,因为他才是真正给出答案的人。
谢谢。这只是对Shu Khan答案的修改。他的回答是正确的,我尝试了他的两种方法来实现我的要求,我成功了 但是,我发现我实际上不需要以编程方式创建导航控制器,也不需要设置标志并签入viewDidLoad 我需要做的就是在prepareForSegue函数中应用他的第二个方法 例如:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let navController = segue.destination as! UINavigationController
let BVC = UIStoryboard(name:"Main", bundle:nil).instantiateViewController(withIdentifier: "BVC")
navController.viewControllers.append(BVC)
}
所有的功劳都归于施汗,因为他才是真正给出答案的人。
谢谢。我喜欢第二个。但我不知道如果我在nav.viewControllers中设置另一个VC之前,如何才能转到VCB。有没有可能,或者我需要做更多的步骤来完成它。VCB在索引1处,所以当你从VC中呈现它时,它是堆栈的顶部,这是序列的来源。B将是显示。返回将显示在itI之前从B返回到VC,就像第二个一样。但我不知道如果我在nav.viewControllers中设置另一个VC之前,如何才能转到VCB。有没有可能,或者我需要做更多的步骤来完成它。VCB在索引1处,所以当你从VC中呈现它时,它是堆栈的顶部,这是序列的来源。B将是显示。返回将显示从B返回到它之前的VC