将数据从UITableViewCell传递到ViewController

时间:2018-05-27 09:31:43

标签: ios swift uitableview

我有一个从具有全局变量的UITableViewCell扩展的类。我想在另一个ViewController中访问该变量(selectedMaterialId)。 PrepareForSegue适用于ViewController。我怎么能这样做?

我的细胞分类是:

class MaterialsTableViewCell: UITableViewCell {

@IBOutlet weak var cellView: UIView!
@IBOutlet weak var materialCodeLbl: UILabel!
@IBOutlet weak var materialDescLbl: UILabel!
@IBOutlet weak var greenBtnOutlet: UIButton!
@IBOutlet weak var redBtnOutlet: UIButton!
@IBOutlet weak var yellowBtnOutlet: UIButton!

public var selectedMaterialId = 0
@IBAction func redBtnAction(_ sender: UIButton) {
    selectedMaterialId = sender.tag

    }
}

我想访问另一个VC中的selectedMaterialId

3 个答案:

答案 0 :(得分:0)

如果我没弄错,你想使用自定义tableviewcell(MaterialsTableViewCell)中的selectedMaterialId变量。 Inshort,您希望将数据从一个类传递到另一个类。您可以使用委托概念来传递值

答案 1 :(得分:0)

假设您想要的是在从表格视图单元格触发segue之后推送视图控制器,只需从拥有如下所示的tableview的控制器准备segue。

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


    if 
        let senderCell = sender as? MaterialsTableViewCell,
        let yourController = segue.destination as? YourControllerClass {

        yourController.selectedMaterialId = senderCell.selectedMaterialId

    }



}

答案 2 :(得分:0)

你可以在Tableview中调用这个函数

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    variables.name = variables.nameArray[indexPath.row]

    let vc = self.storyboard?.instantiateViewController(withIdentifier: "nameofcontroller")
    self.present(vc!, animated: true, completion: nil)
}

Show storyboard,进入新的ViewController

您可以创建一个可以整体使用的公共变量。

class variables
{
    static var name: String = ""
}

所以在新的控制器中调用它:

print("\(variables.name)")