情节提要Segue目的地不是预定的课程

时间:2019-05-20 21:58:39

标签: ios swift

我有一个分镜脚本,可以将VC1连接到VC2。标识符为“ showDetail”,目标ViewController类为YTimeCalendarDetailViewController。当我在prepareForSegue中逐步执行以下操作时,如果让vc = segue.destination为失败,它将引发SIGABRT。 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个我打算通过分段控件显示/隐藏的容器视图。但我对此表示怀疑...我实在是个主意。

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

您需要为Ib中的vc分配类名称

let vc = segue.destination as? YTimeCalendarDetailViewController,

从打印<< strong> UIViewController:>中可以很明显地看到,在IB中选择vc

enter image description here

为便于调试,请始终使用as!代替as?

let vc = segue.destination as! YTimeCalendarDetailViewController