我有一个收集视图,其中在点按每个单元格时会弹出较大版本的单元格图像,而在再次点按时会消失。最重要的是,我希望能够在单元格的一角选择一个视图,该视图在再次点击时显示蓝色选中标记(SSCheckMark View)或灰色选中标记。我当前的代码是:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "photoCell", for: indexPath) as! PhotoCell
cell.backgroundColor = .clear
cell.imageView.image = UIImage(contentsOfFile: imagesURLArray[indexPath.row].path)
cell.checkmarkView.checkMarkStyle = .GrayedOut
cell.checkmarkView.tag = indexPath.row
cell.checkmarkView.checked = false
let tap = UITapGestureRecognizer(target: self, action: #selector(checkmarkWasTapped(_ :)))
cell.checkmarkView.addGestureRecognizer(tap)
return cell
}
func checkmarkWasTapped(_ sender: SSCheckMark) {
let indexPath = IndexPath(row: sender.tag, section: 1)
if sender.checked == true {
sender.checked = false
} else {
sender.checked = true
}
collectionView.reloadItems(at: [indexPath])
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
addZoomedImage(indexPath.row)
addGestureToImage()
addBackGroundView()
view.addSubview(selectedImage)
}
但是当我运行并选择选中标记视图时,出现错误:
unrecognized selector sent to instance
第一行上的checkmarkWasTapped()
我可以看到它不喜欢发件人,但我不知道为什么。任何帮助都会很棒。 最佳答案
UITapGestureRecognizer
tap
的sender
是手势。 checkmarkWasTapped
方法定义错误。您可以使用checkmarView
获得sender.view
。尝试这个。
func checkmarkWasTapped(_ sender: UIGestureRecognizer) {
let checkmarkView= sender.view as? SSCheckMark
let indexPath = IndexPath(row: checkmarkView.tag, section: 1)
if checkmarkView.checked == true {
checkmarkView.checked = false
} else {
checkmarkView.checked = true
}
collectionView.reloadItems(at: [indexPath])
}