gpt4 book ai didi

ios - 单击TableViewCell时如何将数据从NSObject传递到另一个ViewController?

转载 作者:行者123 更新时间:2023-12-01 19:45:41 25 4
gpt4 key购买 nike

我有一个带有ViewController1TableView。我想要做的是在用户单击ViewController2的同时转到TableViewCell并传递一条数据。

有关更多详细信息:

每个单元格都有一个itemId和其他数据,这些数据从我的API中提取后存储在NSObject类中,我使用TableViewCell类中的数据。因此,当我将performSegue转换为ViewController2时,我想在itemId中获取ViewController2
现在,我可以使用以下代码单击ViewController2来转到tableViewCell:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
//here I dont know how to get the itemId for that particular cell
performSegue(withIdentifier: "GoToSecondVc", sender: self)
}

我知道我可以这样传递 itemId:
var itemId : Int!
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "GoToSecondVc" , let secondVC = segue.destination as? SecondViewController{
secondVC.itemId = self.itemId
}

现在的问题是当用户在 itemId部分中的 NSObject之前单击任何 tableViewCell时,我不知道如何从 performSegue获取 didSelectRowAt

那么在这种情况下如何获取 itemId?还是有更好的方法来做到这一点?

最佳答案

我建议将didSelectRowAt中的选定索引路径作为sender传递:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "GoToSecondVc", sender: indexPath)
}

并在 prepare(for segue中使用它,不需要临时变量 itemId。该代码假定 items是数据源数组:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "GoToSecondVc" , let secondVC = segue.destination as? SecondViewController {
let indexPath = sender as! IndexPath
let item = items[indexPath.row]
secondVC.itemId = item.itemId
}
}

关于ios - 单击TableViewCell时如何将数据从NSObject传递到另一个ViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48618628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com