我有两个文件。第一个是包含UICollectionView的UIViewController。第二个是UICollectionViewCell,它有点像cell-nib的ViewController。它管理单元格内的所有操作,例如,如果用户单击单元格内的类似按钮。
当用户单击类似按钮时,我会打印包含类似按钮的单元格的IndexPath。所有单元格都包含类似按钮,但我想知道用户单击类似按钮的单元格的IndexPath。
我的问题是如何将此IndexPath与UIViewController通信?我之所以想这样做,是因为我的UIViewController存储了整个数据(在一个数组中(,并且我想使用IndexPath访问这些数据的特定部分。另一种可能性是将这些数据存储在UICollectionViewCell文件中,但这不是一个好方法。
我真的很难找到解决方案,你帮了我很多。非常感谢大家!回调关闭是解决这个问题的正确方法。这是我的解决方案:
//UICollectionViewCell
var saveProductLike: ((_ index: Int) -> Void)?
@IBAction func likedButtonClicked(_ sender: UIButton) {
print("Liked button clicked!")
let productArrayIndex = calculateProductArrayIndex(for: sender)
saveProductLike?(productArrayIndex!)
}
//UIViewController
cell.saveProductLike = { (index) -> Void in
print(index)
}