在UICollectionViewCell中更改按钮背景

时间:2017-11-30 05:01:16

标签: swift uicollectionview uicollectionviewcell

我在UICollectionViewCell的{​​{1}}(自定义类)中有一个按钮。单击该按钮时,它会更改其背景颜色。一开始工作得很好,但是当我改变主视图的背景颜色时,我无法更新按钮的背景颜色。背景颜色存储在一个数组中,这是单元设置功能:

UICollectionView

因此,如果我以func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { print("Rebuilding cells") let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! ColorCollectionViewCell cell.button.tappedColor = backgroundColors[section] cell.button.originalColor = backgroundColors[section + 1] cell.button.delegate = self cell.button.addTarget(self, action: #selector(didHitButton), for: .touchUpInside) return cell } 作为1开始,它会加载具有正确背景颜色的单元格按钮(黑色这是截面数组中的第一种颜色。然后,我将计数设置为零并{{1它成功地消灭了细胞。

但是当我将section设置为2并再次重置总细胞计数时,细胞不采用新的背景颜色(第2部分颜色为绿色)。他们在第1部分保持黑色。

当数据更新时,我如何告诉grid.reloadData()重新绘制单元格中的按钮背景颜色,其中背景颜色来自基于section变量的数组? / p>

1 个答案:

答案 0 :(得分:0)

我认为您应该使用视图的.backgroundColor属性来设置背景颜色以显示它。

除此之外,每个tableView.reload()所有的tableView委托方法都会被再次调用,并且您的单元格会根据您提供的数据重新绑定...所以您必须像对待它们一样对待它们未初始化。这也可以指出,如果你没有分配正确的颜色,黑色可能是他们的默认颜色,也许它不适用于section 1,或者你应该检查存储在你的数据数组(你可以调试或打印它们)。

为了更清洁的逻辑流程,请执行以下操作:

if indexPath.section == 0 {
    // do this for section 0
} else if indexPath.section == 1 {
    // do this for section 1
} else {
    // for all other if any
}

希望这对你有所帮助...