Swift - 执行Segue导致ViewController在prepareForSegue传递数据之前加载



我正在尝试通过点击单元格在两个表视图之间执行 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
    }
 }

最新更新