从UICollectionViewCell访问保存在UIViewController中的变量?

问题描述

我有一个MainViewController(MainVC.swift)和一个CellViewController(CellVC.swift)。 我的MainViewController包含一些标签,按钮和一个Collection视图。此Collection View的单元格由CellViewController(我有一个Cell.xib文件)控制。

在MainViewController中,我保存了一些要在CellViewController中使用的变量(floatratingViewWidth,floatratingViewHeight)。

如何从CellViewController访问这些变量?

MainViewController

class MainVC: UIViewController {
    @IBOutlet weak var collectionView: UICollectionView!

    var floatratingViewWidth = CGFloat()
    var floatratingViewHeight = CGFloat()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        collectionView.register(UINib(nibName: "Cell",bundle: nil),forCellWithReuseIdentifier: "myCell")
        collectionView.delegate = self
        collectionView.dataSource = self
 
        settingUpNavBar()
        
        let cellHeight = view.frame.size.height * 0.3
        let cellWidth = view.frame.size.width * 0.42
        
        floatratingViewWidth = cellWidth - 69
        floatratingViewHeight = cellHeight * 0.05

    }

}

CellViewController

class CellVC: UICollectionViewCell {

    @IBOutlet weak var ratingHeight: NSLayoutConstraint!
    @IBOutlet weak var ratingWidth: NSLayoutConstraint!
    
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code

    }

}

解决方法

在您的单元格中添加所需的变量:

class CellVC: UICollectionViewCell {
    var cellFloatRatingViewWidth : CGFloat?
    var cellFloatRatingViewHeight = CGFloat?

在您的:

 func collectionView(_ collectionView: UICollectionView,cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

做:

cell.cellFloatRatingViewWidth = floatRatingViewWidth