无法转换类型 UINavigationController 的值不在主故事板中导航
Posted
技术标签:
【中文标题】无法转换类型 UINavigationController 的值不在主故事板中导航【英文标题】:Could not cast value of type UINavigationController not navigating in the Main Storyboard 【发布时间】:2021-07-07 22:52:31 【问题描述】:我知道有很多类似的帖子,但没有人回答我的情况。我看到的所有帖子都只涉及主故事板。我正在导航到另一个名为 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
【问题讨论】:
真的没什么好说的。该错误是不言自明的。如果popupVC = segue.destination as! Date_Popover_VC
崩溃,那是因为此segue 的目的地不是 Date_Popover_VC。正如错误消息所说,它是一个 UINavigationController 。你是唯一可以看到你的故事板和你的转场的人,所以解决这个问题取决于你。
【参考方案1】:
我终于知道我想错的地方了。在主情节提要上,情节提要对日期弹出框的引用链接到 segue。情节提要需要是情节提要的名称,而引用 ID 需要是情节提要上 VC 的名称。故事板是从下拉菜单中选择的。需要输入引用的 ID。它实际上与 UINavigationController 无关,因此错误措辞有点误导。
【讨论】:
以上是关于无法转换类型 UINavigationController 的值不在主故事板中导航的主要内容,如果未能解决你的问题,请参考以下文章
无法将类型为“System.Collections.Generic.List`1[EPMS.Domain.SingleItem]”的对象强制转换为类型“EPMS
无法转换类型的值'(数据:CMAccelerometerData!,错误:NSError!)
无法将 [Struct] 类型的值快速转换为 [string] 类型