我有一个带有ViewController1
的TableView
。我想要做的是在用户单击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/