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

Ios 是否从UICollectionViewCell访问保存在UIViewController中的变量?,ios,swift,uicollectionview,uicollectionviewcell,Ios,Swift,Uicollectionview,Uicollectionviewcell,我有一个MainViewController(MainVC.swift)和一个CellViewController(CellVC.swift)。 My MainViewController包含一些标签、按钮和集合视图。此集合视图的单元格由CellViewController控制(我有一个cell.xib文件) 在MainViewController中,我保存了一些要在CellViewController中使用的变量(floatRatingViewWidth、floatRatingViewHeig

我有一个MainViewController(MainVC.swift)和一个CellViewController(CellVC.swift)。 My MainViewController包含一些标签、按钮和集合视图。此集合视图的单元格由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

    }

}
class CellVC: UICollectionViewCell {

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

    }

}
CellViewController

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

    }

}
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 {
做:


您是否有collectionView(collectionView:UICollectionView,cellForItemAt indexPath:indexPath)->UICollectionViewCell?谢谢!它可以工作(但我立即进入插座)!是否有可能执行类似“let mainVC=mainVC()”的操作,然后从实例访问数据?我知道这段代码不起作用,但可能与之类似?这不是一个好主意,因为您使用的是mainVC的一个新实例,因此如果任何数据发生更改,每个实例中的数据都会不同。你能做的就是创建一个只包含变量的类,在mainvc中实例化它,设置数据并传递整个类。有意义^^非常感谢!