将数据从Collection View单元传递到View Controller

时间:2019-10-21 20:18:57

标签: ios swift uiviewcontroller uicollectionview closures

这是UICollectionViewCell类:

class ViewCell: UICollectionViewCell {

@IBOutlet weak var lblOutlet: UILabel!
@IBOutlet weak var contentViewOutlet: UIView!

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
}

public var dismiss: (()-> Void)? = nil

@IBAction func btnBack(_ sender: UIButton) {
    self.dismiss?()
}
}

这是ViewController类的必要代码范围:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell: ViewCell = // Your code to dequeue cell
    cell.dismiss = { [weak self] in
         //??????
    }
}

例如,假设我必须将此数据sender.titleLabel?.text传递给ViewController。因此,如何将此参数(sender.titleLabel?.text)添加到此代码中:

public var dismiss: (()-> Void)? = nil 

以及如何在以下范围的View Controller中读取此数据:

cell.dismiss = { [weak self] in
     //Here.
}

1 个答案:

答案 0 :(得分:0)

您可以尝试

public var dismiss: ((String)-> Void)? = nil 

self.dismiss?(sender.titleLabel!.text)

然后

cell.dismiss = { [weak self] str  in
    //Here.
}