故事板 segue 目的地不是预期类

Posted

技术标签:

【中文标题】故事板 segue 目的地不是预期类【英文标题】:Storyboard segue destination is not intended class 【发布时间】:2019-05-20 21:58:38 【问题描述】:

我有一个将 VC1 连接到 VC2 的故事板转场。标识符是“showDetail”,目标 ViewController 类是 YTimeCalendarDetailViewController。当我在 prepareForSegue 中逐步执行以下操作时,如果 let vc = segue.destination as? YTimeCalendarDetailViewController:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    if segue.identifier == DETAIL_SEGUE_ID,
        let vc = segue.destination as? YTimeCalendarDetailViewController,
        let selectedDate = selectedDate 
        vc.employeeRecord = selectedJob.employeeRecord
        vc.punches = timesheet[selectedDate]?.punches ?? []
        vc.selectedDate = selectedDate
    

我已经检查了我的 segue 和 viewControllers 三倍以确保它们指向正确的东西,从正确的类继承等。当我在 lldb 中打印出 segue.destination 时,它告诉我有一个 UIViewController ,但我不知道如何找到VC的确切类。这是容器视图的问题吗? VC2,包含 3 个容器视图,我打算通过分段控制显示/隐藏它们。但我对此表示怀疑......我只是没有想法。

【问题讨论】:

【参考方案1】:

需要给Ib中的vc分配类名

let vc = segue.destination as? YTimeCalendarDetailViewController,

从打印中可以看出 UIViewController:> ,选择IB中的vc

为了方便调试,请始终使用as! 而不是as?

let vc = segue.destination as! YTimeCalendarDetailViewController

【讨论】:

我愿意!它在代码中。或者你能帮我理解你想说的更多吗? 你说的“vc in lb”是什么意思? IB is interface builder将Ib/stroyboard中目标vc的类名设置为YTimeCalendarDetailViewController

以上是关于故事板 segue 目的地不是预期类的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义表格视图单元格中的故事板segue

“Unwind Segue”可以在通过故事板参考连接的两个故事板之间工作吗?

带有程序故事板segue的NSInternalInconsistencyException

在多个故事板环境中展开 segue

故事板 segue 调用顺序

故事板 Segue 未加载视图