微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法转换 UINavigationController 类型的值,无法在主故事板中导航

如何解决无法转换 UINavigationController 类型的值,无法在主故事板中导航

我知道有很多类似的帖子,但没有一个能回答我的情况。我见过的所有帖子都只涉及主故事板。我正在导航到一个名为 Date_Popup 的不同故事板,它在 NC 中嵌入了一个 VC。问题是这段代码适用于 iPhone,所以我知道 segue.identifier、Storyboard ID 和 VC ID 是正确的。此外,我在 7 个较旧的应用程序中使用了相同的代码,并且在那里运行良好。我很沮丧它在那里工作而不是在这个新应用程序中。我不确定这是 Xcode 问题还是什么。我留下了注释掉的代码,让读者知道我已经尝试了两种方法。如果我注释掉引发错误的行,代码会执行,但不会设置 preferredContentSize。 感谢您的帮助。

这是我得到错误的地方。

popupVC = segue.destination as! Date_Popover_VC

她是我的密码。

override func prepare(for segue: UIStoryboardSegue,sender: Any?)
    {
        if segue.identifier == K.Segue.to_Date_Popover
        {
            var popupVC = UIStoryboard(name: K.StoryboardID.date_Popup_SB,bundle: nil).instantiateViewController(identifier: K.StoryboardID.date_Popover_VC) as! Date_Popover_VC
            let navigationController = UINavigationController(rootViewController: popupVC)
            
            // let storyboard : UIStoryboard = UIStoryboard(name: K.StoryboardID.date_Popup_SB,bundle: nil)
            // var popupVC: Date_Popover_VC = storyboard.instantiateViewController(withIdentifier: K.StoryboardID.date_Popover_VC) as! Date_Popover_VC
            // let navigationController = UINavigationController(rootViewController: popupVC)
            
            let deviceName = UIDevice().type
            let deviceString: String = ("\(deviceName)")
            
            if deviceString.contains(K.theDevice.iPad)
            {
                popupVC = segue.destination as! Date_Popover_VC
                
                if ModelData.isInline()
                {
                    popupVC.preferredContentSize = CGSize(width: 320,height: 300)

                } else {

                    popupVC.preferredContentSize = CGSize(width: 350,height: 410)
                }

                navigationController.isNavigationBarHidden = true
                
            } else if deviceString.contains(K.theDevice.iPhone) {
                
                present(navigationController,animated: true,completion: nil)
                navigationController.isNavigationBarHidden = false
            }
            
            popupVC.theDate = dateFld_Outlet.text!
            popupVC.dateDelegate = self
        }
    }

解决方法

我终于知道我想错在哪里了。在主情节提要上,情节提要对日期弹出框的引用链接到转场。故事板需要是故事板的名称,引用 ID 需要是该故事板中 VC 的名称。故事板是从下拉菜单中选择的。需要输入引用 ID。它实际上与 UINavigationController 无关,因此错误措辞有点误导。

The Main Storyboard

Storyboard Reference

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。