我想在我的CollectionViewCell
中添加一个tap事件,并将它所拥有的数据传递给我的cell
。我怎样才能做到这一点?
此事件应该由我的ViewController
处理还是由CollectionViewCell
处理?
我的ViewController
:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionViewCell", for: indexPath) as! CollectionViewCell
cell.imgImage.image = imageArray[indexPath.row]
cell.url = "xhini"
return cell
}
我的
CollectionViewCell
:class CollectionViewCell: UICollectionViewCell {
@IBOutlet weak var imgImage: UIImageView!
var url: String = "url"
}
最佳答案
实现UICollectionViewDelegate
,然后可以使用ViewController
中的以下方法对选择单元格作出反应:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let image = imageArray[indexPath.row]
// do stuff with image, or with other data that you need
}
不要忘记在设置数据源的位置设置委托:
collectionView.dataSource = self
// add this line:
collectionView.delegate = self
更新
或者,如果您使用的是序列图像板,您希望使用序列图像板设置它,就像为
dataSource
的tableView
设置数据源一样:更新2
手势识别器取消集合视图的事件,因此要处理此问题,只需取消对
tap
行的注释,它就会工作: //Looks for single or multiple taps.
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.dismissKeyboard))
//Uncomment the line below if you want the tap not not interfere and cancel other interactions.
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
关于ios - 在传递单元格数据时将Tap事件添加到CollectionViewCell,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48612109/