识别选择了哪个tableviewcell并将值传递给另一个视图控制器[重复]

Posted

技术标签:

【中文标题】识别选择了哪个tableviewcell并将值传递给另一个视图控制器[重复]【英文标题】:Recognize which tableviewcell is selected and pass value to another viewcontroller [duplicate] 【发布时间】:2017-05-16 09:12:18 【问题描述】:

我正在尝试识别选择了哪个 tableviewcell,然后我想获取该单元格的标签值并将其传递给下一个视图控制器。我的单元格有一个标签值string 和一个数字值Int。我正在使用 firebase 数据库来获取所有这些数据。

我的代码:

import UIKit


class PlacesTableViewController: UITableViewController 
 //MARK: Properties
    @IBOutlet weak var placesTableView: UITableView!
var places = [Places]()
override func viewDidLoad()
    
        super.viewDidLoad()




        // Loads data to cell.
        loadData()
    
override func numberOfSections(in tableView: UITableView) -> Int
    
        return 1
    
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
       
        //return the number of rows
        return places.count
    
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    
        // Table view cells are reused and should be dequeued using a cell identifier.
        let cellIdentifier = "PlacesTableViewCell"

        guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? PlacesTableViewCell  else 
            fatalError("The dequeued cell is not an instance of PlacesTableView Cell.")
        

        let place = places[indexPath.row]

        cell.placeLabel.text = place.name
        cell.ratingControl.rating = place.rating

        return cell

    
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
    
        print(places[indexPath.section])
        self.performSegue(withIdentifier: "ShowCommentsTableViewController", sender: nil)
    

【问题讨论】:

【参考方案1】:

你可以关注这个帖子,有用send-data-from-tableview-to-detailview-swift

在移动到目标视图控制器之前,您必须在目标视图控制器中创建变量并将数据存储在这些变量中。 此链接将为您提供帮助。

【讨论】:

我明白我必须做什么谢谢你的帖子!但是当我尝试覆盖 prepareForSegue 函数时遇到了问题。 欢迎在***中发帖提问。:) 我找到了。这是一个 Swift 3 更新代码。 override func prepare(for segue: UIStoryboardSegue, sender: Any?) 而不是我用的。【参考方案2】:

试试这个:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
    
        let selectedPlace = places[indexPath.section]
        self.performSegue(withIdentifier: "ShowCommentsTableViewController", sender: selectedPlace)
    


override func prepare(for segue: UIStoryboardSegue, sender: Any?) 

    if let selectedPlace = sender as? Places,
        let destViewController = segue.destination as? SecondViewController 
        destViewController.place = selectedPlace
    

【讨论】:

以上是关于识别选择了哪个tableviewcell并将值传递给另一个视图控制器[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将 uitableview 选择与 indexpath 值居中

如何在 Swift 3.0 中将 TableViewCell 值传递给新的 ViewController?

Swift iOS - 如何将直接从 TableViewCell 的子类中获取的值传递给 TableView 的 didSelectRow?

如何从选择标签传递数组对象并将值传递给 API?

Laravel - 如何获取选择值并将其传递给 RegisterController create()

如何将图像从 TableViewCell 传递到 UIImage