识别选择了哪个tableviewcell并将值传递给另一个viewcontroller

时间:2017-05-16 09:12:18

标签: ios swift uitableview uiviewcontroller cell

我正在尝试识别选择了哪个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)
    }
}

2 个答案:

答案 0 :(得分:1)

you can follow this thread to be useful send-data-from-tableview-to-detailview-swift

You have to create variable in destination view controller and store data in those Variable before Moving to Destination View controller. This link will help you for this.

答案 1 :(得分:0)

Try this:

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
    }
}