在UINavigationController堆栈中跳转ViewController

时间:2018-07-01 13:22:08

标签: ios swift

enter image description here

如您在上图中所看到的,我有一个视图控制器(A),其中包含一个导航控制器。我想立即执行此任务,使我可以查看控制器(B)。我知道你们中有些人会说只是在(A)和(B)之间做一个争吵,但这不是我想要的。

我希望能够不回到(A),而是回到导航控制器堆栈中的上一个视图控制器。

谢谢。

3 个答案:

答案 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)