垂直和水平滚动collectionView选择单元格问题

Posted

技术标签:

【中文标题】垂直和水平滚动collectionView选择单元格问题【英文标题】:vertical and horizontal scroll collectionView select cell issue 【发布时间】:2019-02-27 20:48:29 【问题描述】:

我有一个双向滚动的collectionView,我希望一个单元格背景视图在选中时出现,在取消选中时消失。 我声明了一个带有选定 indexPaths 的数组以在 cellForItemAt indexPath func 中对其进行测试,但它不起作用。请帮忙! 这是我的代码:

    var selectedIndexPaths:[IndexPath]=[]

 func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) 
    if(selectedIndexPaths.contains(indexPath))
        selectedIndexPaths=selectedIndexPaths.filter  $0 != indexPath 
     

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) 
    selectedIndexPaths.append(indexPath)
 collectionView.reloadItems(at: [indexPath])


func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
    // swiftlint:disable force_cast
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: contentCellIdentifier,
                                               for: indexPath) as! UserCollectionCell

    if(selectedIndexPaths.contains(indexPath) )
        cell.backgroundView?.isHidden=false
    
    else
        cell.backgroundView?.isHidden=true
    

    return cell

【问题讨论】:

【参考方案1】:

删除

 func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) 
    if(selectedIndexPaths.contains(indexPath))
        selectedIndexPaths=selectedIndexPaths.filter  $0 != indexPath 
     
 

当您选择一个单元格并自动取消选择之前选择的单元格时调用它,然后将其更改为

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) 

    if selectedIndexPaths.contains(indexPath) 
        selectedIndexPaths = selectedIndexPaths.filter  $0 != indexPath 
    
    else 
       selectedIndexPaths.append(indexPath)
    
    collectionView.reloadItems(at: [indexPath])

【讨论】:

使用您的解决方案,取消选择的单元格不会隐藏它的背景视图,直到您单击它,当您选择另一个单元格时它不会自动隐藏它

以上是关于垂直和水平滚动collectionView选择单元格问题的主要内容,如果未能解决你的问题,请参考以下文章

用连续卷轴查看;水平和垂直

垂直放置集合视图单元格而不是水平放置?

滚动时显示重复数据的 CollectionView 单元格?

如何将我的 UICollectionView Flowlayout 更改为具有水平滚动的垂直列表

如何滚动到 UICollectionView 的中心(水平和垂直)

水平和垂直collectionViews在同一个视图Controller