在动态值表视图中使用 performSeguewithIdentifier 函数

Usage of performSeguewithIdentifier Function in Dynamic Values Tableview

我可以在表格视图中列出数据。当我选择一行并尝试传递另一个视图控制器以显示与我按下的单元格相关的特定数据时,它无法成功。 我无法在 prepareforsegue 函数中存储数据 "selectedMeal" 变量,它总是 return [ ]。 我认为,我的主要问题是选择单元格并发送到该单元格以准备 segue 功能。可能是DispatchQueue.main.async函数有问题

*当我尝试传递给静态数据时,效果很好。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    if let cell = tableView.cellForRow(at: indexPath) {
        cell.accessoryType = .checkmark;

        DispatchQueue.main.async {
            self.performSegue(withIdentifier: "gotoOrderDetail", sender: self) 
        }
    }
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if (segue.identifier == "gotoOrderDetail") {
        let DestViewController : OrderDetailListViewController = segue.destination as! OrderDetailListViewController
        let selectedMeal = selectedCells.map { (index: Int) -> SavedMeal in
            return savedMeal[index]
        }
        DestViewController.mealarray = selectedMeal
    }
}

尝试使用此代码

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

if (segue.identifier == "gotoOrderDetail") {
    let DestViewController : OrderDetailListViewController = segue.destination as! OrderDetailListViewController
    let path = self.tableView.indexPathForSelectedRow()! // get the selected indexPath
    DestViewController.mealarray = savedMeal[path.row]
}
}

尝试使用 Sender 参数

你可以这样吗:

self.performSegue(withIdentifier: "gotoOrderDetail", sender: indexPath)

然后在准备中(for segue: sender?)

if (segue.identifier == "gotoOrderDetail") {
    let DestViewController : OrderDetailListViewController = segue.destination as! OrderDetailListViewController
    let index = sender as! Int
    DestViewController.mealarray = savedMeal[index]
}

p/s: 这种情况下不需要使用调度队列