如何在UINavigationController

时间:2018-01-17 21:44:45

标签: swift uinavigationcontroller

在我的应用程序中,我有一个UINavigationController,我正在推动并弹出ViewControllers。在某些时候,我想以模态方式显示VC(显示前面的控制器“在下面”)。我可以通过在故事板中设置segue来使其工作,但是我在一个需要以编程方式进行操作的地方,而且我似乎无法找到合适的魔法咒语来使其工作。

我看到了几个类似的问题,但他们似乎是以模态方式显示UINavigationController,而不是以模态方式显示UINavigationController堆栈中的一个VC。

(我在这里提出了一个测试应用程序:https://github.com/SuperTango/ModalNavController,这就是代码和图像来自的地方)

“手动”代码确实:

@IBAction func goToVC2Tapped(_ sender: Any) {
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let destinationViewController = storyboard.instantiateViewController(withIdentifier: "VC2ViewController") as! VC2ViewController
    destinationViewController.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
    self.navigationController?.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
    self.navigationController?.pushViewController(destinationViewController, animated: true)
}

但它不起作用(请参阅下面的gif中的第二个转换)。

有效的segue设置如下:

segue setup

这个gif来自测试应用程序并显示它如何与segue一起使用,但不是手动。

enter image description here

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:3)

要以模态方式呈现,您需要使用:

present(destinationViewController, animated: true, completion: { })