在动态值表视图中使用 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: 这种情况下不需要使用调度队列
我可以在表格视图中列出数据。当我选择一行并尝试传递另一个视图控制器以显示与我按下的单元格相关的特定数据时,它无法成功。 我无法在 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: 这种情况下不需要使用调度队列