如何用多个 Segue 覆盖 prepareForSegue

How to override the prepareForSegue with multiple Segue's

所以我正在学习 Core Data 并且我设法创建了一个具有父关系的 segue,它允许我根据您 select 在上一个 VC 中的类别仅显示某些项目](类别视图控制器)。现在我在这之后创建了一个单独的 VC,它根据您的位置显示天气,要到达它,您必须单击原始 VC(类别视图控制器)中的按钮才能到达天气视图控制器。但是,每次我尝试这样做并执行 segue 时,我 运行 进入以下错误:

这是我目前的代码:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    
    let destinationVC = segue.destination as! NoteTableViewController
    let weatherDestinationVC = segue.destination as! WeatherViewController
    
    if let indexLocale = noteTableView.indexPathForSelectedRow {
        destinationVC.selectionCategory = noteArray[indexLocale.row]
        print(indexLocale.row)
    }   else {
        print("Error")
        weatherDestinationVC.delegate = self
        performSegue(withIdentifier: "goToWeather", sender: self)
    }
    
}


@IBAction func goToWeatherView(_ sender: UIBarButtonItem) {
    performSegue(withIdentifier: "goToWeather", sender: self)
}

任何帮助将不胜感激,因为我只是在学习核心数据!

有条件地转换不同的 segue 目标视图控制器或检查 segue 的 identifier 无论你喜欢哪个。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let destinationVC = segue.destination as? NoteTableViewController {
        if let indexLocale = noteTableView.indexPathForSelectedRow {
            destinationVC.selectionCategory = noteArray[indexLocale.row]
            print(indexLocale.row)
        }
    } else if let weatherDestinationVC = segue.destination as? WeatherViewController {
        weatherDestinationVC.delegate = self
    }
}

此外,您不必 performSegueprepareForSegue 内。