在我的应用程序中,我有一个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设置如下:
这个gif来自测试应用程序并显示它如何与segue一起使用,但不是手动。
有什么想法吗?谢谢!
答案 0 :(得分:3)
要以模态方式呈现,您需要使用:
present(destinationViewController, animated: true, completion: { })