在collectionview上显示复选标记

Posted

技术标签:

【中文标题】在collectionview上显示复选标记【英文标题】:Displaying checkmark on collectionview 【发布时间】:2017-03-25 18:08:22 【问题描述】:

我有一个集合视图,当点击每个单元格时,会弹出更大版本的单元格图像,再次点击时会消失。最重要的是,我希望能够在单元格的角落选择一个视图,该视图在再次点击时显示蓝色复选标记(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 instancecheckmarkWasTapped() 的第一行我可以看到它不喜欢发件人,但我不知道为什么。任何帮助都会很棒。

【问题讨论】:

【参考方案1】:

UITapGestureRecognizertapsender是手势。 checkmarkWasTapped 方法定义错误。您可以使用sender.view 获得checkmarView。试试这个。

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])

【讨论】:

非常感谢。你知道为什么要点击两次才能让支票出现和消失吗?

以上是关于在collectionview上显示复选标记的主要内容,如果未能解决你的问题,请参考以下文章

编辑模式下的 UITableView 在 iPad 上不显示复选标记

如何在收藏视图中显示复选标记(图像)

在列表表视图中放置 3 个复选标记,按下按钮,在新表视图中显示 3 列

如何在单元格渲染后检查表格视图上的复选标记图标(附件视图)?

使用 Modal Segue 保留复选标记

将复选标记保存到 tableView Swift 时出现问题