![](/img/trans.png)
[英]Pass Data (Label) from TableViewCell to another ViewController
[英]How to pass data from NSObject to another ViewController when click on TableViewCell?
我有一個帶有TableView
的ViewController1
。 我想做的是,當用戶單擊TableViewCell
時,同時轉到ViewController2
並傳遞一條數據。
更多細節 :
每個單元有一個itemId
和其他數據是存放在NSObject
類從我的API,這是我使用的數據后拉TableViewCell
class.So當我performSegue
到ViewController2
,我想獲得itemId
在ViewController2
現在,我可以使用以下代碼在單擊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
? 還是有更好的方法來做到這一點?
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let it = dataArrray[indexPath.row] as! ItemType
performSegue(withIdentifier: "GoToSecondVc", sender: it.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
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.