如何在自定义框架中嵌入导航控制器

How to embed a navigation controller inside a custom framework

我已经用故事板创建了一个自定义框架。然而,尽管根 viewcontroller 是从导航控制器嵌入的,但每次我检查“self.navigationController”时,它都会打印“nil”。我在这里错过了什么。

但是我的 objective 是在我单击第 4 个 VC 中的按钮后弹出到根目录 viewController。目前实现如下

我的自定义情节提要如下所示。

我是如何导航的。

            if let urlString = Bundle.main.path(forResource: "FAUMESDK", ofType: "framework", inDirectory: "Frameworks") {
                let bundle = (Bundle(url: NSURL(fileURLWithPath: urlString) as URL))
                let sb = UIStoryboard(name: "FAUMEStoryboard", bundle: bundle)
                let vc = sb.instantiateViewController(withIdentifier: "MessagePriviewVC")
                vc.modalPresentationStyle = .fullScreen
                self.show(vc, sender: nil)
            }

我尝试使用下面的代码但没有成功

    let vc = self.storyboard?.instantiateViewController(
                withIdentifier: "MyVCIdentifier") as! MessagePreviewUIViewController

            self.navigationController?.pushViewController(vc, animated: true)

我尝试弹出回根目录的方式VC如下(目前它不起作用,这就是我需要解决方案的地方)。

navigationController?.popToRootViewController(animated: true)

我在这里错过了什么???

虽然您已将视图控制器嵌入故事板的导航控制器中,但您是通过其标识符请求特定的视图控制器;所以你得到的只是那个视图控制器,而不是嵌入在 UINavigationController.

中的那个视图控制器

如果您使用 instantiateInitialViewController,那么您将获得导航控制器,它是故事板的入口点,它的根视图控制器将是您的 MessagePreviewViewController(假设这是在故事板中的导航控制器之后立即查看控制器)

if let urlString = Bundle.main.path(forResource: "FAUMESDK", ofType: "framework", inDirectory: "Frameworks") {
    let bundle = (Bundle(url: NSURL(fileURLWithPath: urlString) as URL))
    let sb = UIStoryboard(name: "FAUMEStoryboard", bundle: bundle)
    let vc = sb.instantiateInitialViewController()
    vc.modalPresentationStyle = .fullScreen
    self.show(vc, sender: nil)
}