我在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>
答案 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
}
希望这对你有所帮助...