【问题标题】:Change Button Background in UICollectionViewCell更改 UICollectionViewCell 中的按钮背景
【发布时间】:2017-11-30 05:01:15
【问题描述】:

我在UICollectionViewUICollectionViewCell(自定义类)中有一个按钮。单击按钮时,它会更改其背景颜色。一开始效果很好,但是当我更改主视图的背景颜色时,我无法更新按钮的背景颜色。背景颜色存储在一个数组中,这是单元格设置函数:

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 变量的数组?

【问题讨论】:

    标签: swift uicollectionview uicollectionviewcell


    【解决方案1】:

    我认为您应该使用视图的.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
    }
    

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

    【讨论】:

    • 单元格内的按钮是一个自定义类。 tappedColor 和 originalColor 为按钮设置了背景颜色,所以我正在这样做。只是重新加载数据似乎不会将 tappedColor 和 originalColor 的值更新为颜色数组中的下一项,因此这些背景颜色的变化不会流过。
    • 好吧,调试找出原因是你最好的选择,放置一个断点并检查 cellForRowAt 方法,看看你的数组是否包含正确的值,以及部分值是否也正确......另外,您是否尝试过 if-else 方法检查部分值,如我的回答?因为你用 section 和 section+1 索引你的数组,如果你有两个部分,那么你会得到 0,1 和 1,2...
    猜你喜欢
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 2015-06-04
    相关资源
    最近更新 更多