【问题标题】:How to embed a navigation controller inside a custom framework如何在自定义框架中嵌入导航控制器
【发布时间】:2021-10-03 02:29:55
【问题描述】:

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

但是,我的目标是在我单击第 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)

我试图弹回 rootVC 的方式如下(目前它不起作用,这是我需要解决方案的地方)。

navigationController?.popToRootViewController(animated: true)

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

【问题讨论】:

    标签: ios swift uinavigationcontroller


    【解决方案1】:

    虽然您已将视图控制器嵌入到故事板的导航控制器中,但您正在通过其标识符请求特定的视图控制器;所以你得到的只是那个视图控制器,而不是嵌入在 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)
    }
    

    【讨论】:

    • 在这种情况下如何知道目标 VC 进行导航?
    • 因为你的初始视图控制器是一个导航控制器。当您实例化它时,它还将实例化嵌入在故事板中的导航控制器中的第一个视图控制器(“注册我的脸”vc)并将其添加到导航控制器中。
    猜你喜欢
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 2019-03-17
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多