【问题标题】:Pass data from UITableViewCell to a ViewController将数据从 UITableViewCell 传递到 ViewController
【发布时间】:2018-05-27 09:31:42
【问题描述】:

我有一个从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

【问题讨论】:

  • 在您的帖子中selectedMaterialId 不是全局变量。

标签: ios swift uitableview


【解决方案1】:

如果我没记错的话,您想使用自定义 tableviewcell(MaterialsTableViewCell) 中的 selectedMaterialId 变量。简而言之,您想将数据从一个类传递到另一个类。您可以利用委托概念来传递值

【讨论】:

  • 你能解释一下吗?或者只是分享一个链接?
  • 此链接将帮助您了解委托和协议以及如何使用它们在类之间传递数据。 [medium.com/ios-os-x-development/…
【解决方案2】:

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

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


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

        yourController.selectedMaterialId = senderCell.selectedMaterialId

    }



}

【讨论】:

    【解决方案3】:

    你可以在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)")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-08
      相关资源
      最近更新 更多