我正在尝试通过点击单元格在两个表视图之间执行 segue。然而,似乎 performSegue 在 prepareForSegue 传递数据之前加载视图,因此数组在第二个视图控制器中留空。
这是我的续集的代码:
func prepare(for segue: UIStoryboardSegue, sender: Any?, didSelectRowAt indexPath: IndexPath) {
if let vc = segue.destination as? ModuleTableViewController {
vc.modules = programmes[indexPath.row].modules
}
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "ProgrammeToggleVCtoModuleVC", sender: self)
}
我想让它在加载视图之前传递数据,因为第二个 VC 中有一个检查,如果数据不存在,会导致程序崩溃。
我在过去的几周里一直在做 Swift,所以如果我错过了任何信息,请原谅我,如果您需要更多信息,很乐意修改它。
您需要
从 vc 本身而不是单元格中钩住 segue 并更正prepare
func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let vc = segue.destination as? ModuleTableViewController {
vc.modules = programmes[tableView.indexPathForSelectedRow!.row].modules
}
}
或
performSegue(withIdentifier: "ProgrammeToggleVCtoModuleVC", sender: indexPath.row)
跟
func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let vc = segue.destination as? ModuleTableViewController {
vc.modules = programmes[sender as! Int].modules
}
}