从AppDelegate(从Universal Link)打开的View Controller没有导航控制器

时间:2019-05-29 15:12:48

标签: ios swift

我为应用创建了通用链接。效果很好。它将打开应用程序并转到定义的视图控制器,并显示通过通用链接传递的正确信息。问题在于视图控制器具有导航控制器。但是当我直接从appdelegate访问时,它没有显示此导航控制器。

我如何在AppDelegate中定义当前内容以显示带有导航控制器的视图控制器?

if let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "AnuncioV2ViewController") as? AnuncioV2ViewController {
    if let window = self.window, let rootViewController = window.rootViewController {
        var currentController = rootViewController
        while let presentedController = currentController.presentedViewController {
            currentController = presentedController
        }
        controller.idAd = adID
        controller.id_usuario = self.userID
        controller.anuncio = anuncio as! [String:Any]

        DispatchQueue.main.async {
            currentController.present(controller, animated: true, completion: nil)
        }
    }
}

1 个答案:

答案 0 :(得分:0)

除非AnuncioV2ViewControllerUINavigationController的子类,否则您实际上就是在省略一个步骤。如果所有内容都已在您的情节提要中正确设置,则只需为父导航控制器提供一个标识符,然后实例化该标识符即可。然后,您可以使用AnuncioV2ViewController访问navigationController.children.first! as! AnuncioV2ViewController实例。 (如果这在您的情节提要中,并且至少可以正常工作一次,那么在黄金时段,这些强制展开应该没问题。)