滚动水平集合视图时的随机行为

Posted

技术标签:

【中文标题】滚动水平集合视图时的随机行为【英文标题】:random behavior when scrolling a horizontal collectionview 【发布时间】:2019-01-31 12:27:38 【问题描述】:

我有一个水平集合视图,它有 5 个带有标签的单元格和一个带有背景集的视图。在最后一项中,我希望隐藏背景。所以我就这样改了。

    override func collectionView(_ collectionView: UICollectionView, didEndDisplaying cell: UICollectionViewCell, forItemAt indexPath: IndexPath) 
    let cell = cell as! CartStepMenuCell
    let index = indexPath.item
    if index == 4
        cell.seperator.isHidden = true
    

问题是当来回滚动时,第一个单元格的背景会被隐藏,而最后一个则不会。

【问题讨论】:

只需在您的代码中添加else 部分 【参考方案1】:

collectionView 中的视图被重用,因此您对视图所做的所有操作也必须撤消。我的规则是任何涉及可重用视图的代码都不能在没有else 的情况下拥有if。在这种情况下,您可以完全删除 if

    cell.seperator.isHidden = (index == 4)

这样在重复使用时可以正确设置和取消设置。

【讨论】:

【参考方案2】:

你需要

let cell = cell as! CartStepMenuCell 
cell.seperator.isHidden = indexPath.item == arr.count - 1

collectionView 单元格已出列,因此您必须提供 else 选项或如上所述,也不要将静态计数放入您的数组计数,以防您从数组中追加或删除最后一项是 1 完整

【讨论】:

以上是关于滚动水平集合视图时的随机行为的主要内容,如果未能解决你的问题,请参考以下文章

如何触发集合视图的 didSelectItemAtIndexPath: 在滚动时点击?

如何实现顶部带有标题的水平滚动集合视图?

如何使用情节提要将集合视图部分项目滚动到水平

Swift 2 集合视图扩展,用于水平滚动到垂直

设置行数后集合视图水平滚动? ios 斯威夫特

如何在按钮按下时在集合视图中滚动(水平)?