嗨,我有collectionView,在我的自定义单元格中有一个radioButton。我在我的集合视图的cellforAt函数中分配了cell.radioButton.tag=indexPath.Row。然后,我创建了一个属性观察器,如下所示。我点击了不同的数据,但是oldValue用相同的值打印。(你可以在照片中看到我点击了shooter和strategy。)
var selectedIndex: Int = 0 {
didSet {
print("old \(oldValue), current \(selectedIndex)")
}
}
@IBAction func tappedRadioButton(_ sender: UIButton) {
self.selectedIndex = sender.tag
}
您在单元格本身中添加了selectedIndex,因此每个单元格都在创建自己的初始值为0的对象,这是错误的。您需要将该属性添加到viewController本身,并通过委托或闭包更改它
//add this closure to your cell
var didTapRadioButton: (() -> Void)?
//call this closure in the @IBAction for the radio button
@IBAction....{
didTapRadioButton?()
}
//from ViewController cellforRow(at IndexPath..
cell.didTapRadioButton = {
self.selectedIndex = indexPath.row
}