将数据从 UITableViewCell 传递到 ViewController

Posted

技术标签:

【中文标题】将数据从 UITableViewCell 传递到 ViewController【英文标题】:Pass data from UITableViewCell to a 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 不是全局变量。 【参考方案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)")

【讨论】:

以上是关于将数据从 UITableViewCell 传递到 ViewController的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 中的 UICollectionView 如何设置选择以将数据从当前视图传递到另一个视图

如何将触摸从 UITextView 传递到 UITableViewCell

如何以编程方式将 JSON 数组从 UITableViewCell 传递到新的 UIViewController?

(iOS + Firebase)无法将图像从 UITableViewCell 传递给下一个 ViewController

当我在 swift 4 中单击 uitableviewcell 时如何传递数据?

如何使用自定义 UITableViewCell 进行 Segue?将数据传递到详细视图控制器的问题