我正在尝试通过点击一个单元格在两个表视图之间进行排序。但是,似乎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,所以如果我错过任何信息,请原谅,如果您需要更多信息,很高兴对其进行修改。
答案 0 :(得分:1)
您需要从vc本身而不是从单元格中钩住segue,并将prepare
改正为
func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let vc = segue.destination as? ModuleTableViewController {
vc.modules = programmes[tableView.indexPathForSelectedRow!.row].modules
}
}
OR
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
}
}