使用导航栏按钮Swift更改集合视图单元格背景

时间:2017-11-06 22:09:05

标签: ios swift uicollectionview

我希望有人可以帮助您解决这个编码问题。我想用导航栏按钮更改我的集合视图单元格背景颜色,这是我的条形按钮选择器代码:

func handleBrightnessChanged() {
   let readingCell = ReadingsDisplayCell()
   readingCell.backgroundColor = .red
}

然而,当我点击按钮时按钮不会做任何事情。你能帮我么?下面是我的UICollectionViewCell类:

class ReadingsDisplayCell: UICollectionViewCell {

    override init(frame: CGRect) {
        super.init(frame: frame)
        backgroundColor = UIColor.gray
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("fatal error in Daily cell")
    }

}

非常感谢。

1 个答案:

答案 0 :(得分:1)

您正在创建新单元格并设置其背景颜色,这对现有单元格没有影响。要更改单元格的颜色,请按照以下步骤操作。

首先,创建一个属性以跟踪单元格颜色。

var currentBackgroundColor = UIColor.gray

handleBrightnessChanged功能中,将此属性设置为新值。

func handleBrightnessChanged() {
    currentBackgroundColor = .red
}

接下来,在collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)函数中设置单元格的背景颜色。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "myID", for: indexPath)
    cell.backgroundColor = currentBackgroundColor
    return cell
}

要在按下按钮时此更改生效,请在按下按钮时重新加载集合视图的数据。

func handleBrightnessChanged() {
    currentBackgroundColor = .red
    collectionView.reloadData()
}