【问题标题】:Swift reconfigure collectionview cellsSwift 重新配置 collectionview 单元格
【发布时间】:2020-08-10 03:57:17
【问题描述】:

所以我试图更改单击的集合视图单元格的背景颜色,但是,当我调用 CollectionView.reloadData() 方法时,背景不会改变。我在想重新加载数据只检查添加和删除单元格,但实际上并没有再次为每个单元格调用配置函数。我想知道如何重新配置​​这些单元格,以便可以更改所选单元格的背景颜色。提前感谢您的帮助!

这是我调用的方法:

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

    ...

    bagCollectionView.reloadData()
}

【问题讨论】:

  • 提供更改颜色的代码示例。
  • 您可以使用 collectionView 'didSelectItemAt' 和 'didDeSelectItemAt' 委托来管理这个,而不是使用 reloadData()
  • 您必须在某处存储索引,存储选定的项目索引,然后重新加载集合,然后实现在单元格中为项目的选定行显示不同颜色的逻辑。例如, cell.backgroundcolor = selectedIndex == indexPath.item ? .red : .yellow。

标签: swift uicollectionviewcell configure collectionview reloaddata


【解决方案1】:

不用调用reloadData,你可以试试:

 override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        let cell = collectionView.cellForItem(at: indexPath)
        cell?.backgroundColor = yourColor
    }

【讨论】:

    【解决方案2】:

    即使您通过在didSelectItemAtdidDeSelectItemAt 中查找单元格或实现逻辑来执行您的逻辑,我建议您应该存储索引。由于单元格的可重用性,有可能选定的单元格在滚动时不显示颜色,或者如果您有大量的数字或记录。

    所以将索引保存在数组(用于多选)或单个变量(单选)中并管理相同的逻辑。

    例如:

    cell.backgroundColor = selectedIndex == indexPath.item ? .red : .yellow 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-08
      相关资源
      最近更新 更多