gpt4 book ai didi

swift - 更改 UICollectionViewCell 中的按钮背景

转载 作者:行者123 更新时间:2023-11-30 11:58:06 26 4
gpt4 key购买 nike

我在 UICollectionViewCell 中有一个按钮(自定义类)在 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
}

所以如果我从 section 开始作为 1,它使用正确的背景颜色加载单元格的按钮(黑色是部分数组中的第一种颜色。然后,我将计数设置为零和 grid.reloadData(),这成功地清除了单元格。

但是当我设置section时为 2 并再次重置总单元格计数,单元格不采用新的背景颜色(第 2 部分颜色为绿色)。从第 1 部分开始,它们就保持黑色。

我该如何告诉 UICollectionView当数据更新时重新绘制单元格中的按钮背景颜色,其中背景颜色来自基于 index 变量的数组?

最佳答案

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

除此之外,每次 tableView.reload() 都会再次调用您的所有 tableView 委托(delegate)方法,并且您的单元格将与您提供的数据重新绑定(bind)......所以您必须处理他们就像未初始化一样。这也可能指出,如果您没有分配正确的颜色,黑色可能是它们的默认颜色,并且可能它不适用于第 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
}

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

关于swift - 更改 UICollectionViewCell 中的按钮背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47566206/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com