单击 TableViewCell 时如何将数据从 NSObject 传递到另一个 ViewController?
Posted
技术标签:
【中文标题】单击 TableViewCell 时如何将数据从 NSObject 传递到另一个 ViewController?【英文标题】:How to pass data from NSObject to another ViewController when click on TableViewCell? 【发布时间】:2018-02-05 08:45:39 【问题描述】:我有一个ViewController1
,里面有一个TableView
。我想做的是转到ViewController2
,并在用户点击TableViewCell
的同时传递一段数据。
更多详情:
每个单元格都有一个itemId
和其他数据存储在NSObject
类中,从我的API 提取后,我使用TableViewCell
类中的数据。所以当我performSegue
到ViewController2
时,我想在ViewController2
中获取itemId
现在我可以使用此代码点击tableViewCell
时转到ViewController2
:
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
现在的问题是当用户在didSelectRowAt
部分中的performSegue
之前点击任何tableViewCell
时,我不知道如何从NSObject
获取itemId
。
那么在这种情况下我怎样才能获得itemId
?或者有更好的方法吗?
【问题讨论】:
放一些cellForRowAtIndex和dataArray的代码...!!! 【参考方案1】:我建议将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
【讨论】:
【参考方案2】: func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
let it = dataArrray[indexPath.row] as! ItemType
performSegue(withIdentifier: "GoToSecondVc", sender: it.itemID)
【讨论】:
以上是关于单击 TableViewCell 时如何将数据从 NSObject 传递到另一个 ViewController?的主要内容,如果未能解决你的问题,请参考以下文章
在 TableViewCell 内单击时 UIButton 标签重置
单击 TableViewCell 以打开当前用户的配置文件视图
单击按钮时将默认 TableViewCell 更改为自定义子类
View Controller Nav 中的 iOS Refresh 按钮:单击时重新加载从解析的 JSON 创建的所有 tableViewCell