如您在上图中所看到的,我有一个视图控制器(A),其中包含一个导航控制器。我想立即执行此任务,使我可以查看控制器(B)。我知道你们中有些人会说只是在(A)和(B)之间做一个争吵,但这不是我想要的。
我希望能够不回到(A),而是回到导航控制器堆栈中的上一个视图控制器。
谢谢。
答案 0 :(得分:1)
您有2个选择
1-
将名称设置到navigationController并在B之前的VC中,在viewDidLoad
中设置一个标记,然后按下VCB
2-
在代码中创建一个navigationController
let nav = /////
nav.viewControllers = [beforeBVC,VCB]
答案 1 :(得分:1)
这只是对Sh_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)
}
所有荣誉归于Sh_Khan,因为他是真正给出答案的人。 谢谢。
答案 2 :(得分:0)
您可以直接将ViewController推入导航堆栈。
self.navigationController?.pushViewController(viewController2, animated: true)