gpt4 book ai didi

swift - UITableViewCell 设置多个部分的 contentView backgroundColor

转载 作者:行者123 更新时间:2023-11-28 11:24:56 25 4
gpt4 key购买 nike

在 UITableView 的 didSelectRow 方法中,我正在更改 UITableViewCell 的 contentView.backgroundColor ,但我有 2 个部分,当我使用以下内容转换单元格时:

让 selectedCell:UITableViewCell = tableView.cellForRow(at: indexPath)!并设置 selectedCell.contentView.backgroundColor 代码会更改两个部分的背景颜色。如何仅从 indexPath.section 转换单元格?

根据@rmaddy 的回答更新

当我在 didSelectRow 方法中保存变量 indexPath.row 和 indexPath.section 并使用 willDisplay 单元格或 cellForRow 中的变量来设置 backgroundColor 时,它会在每 8-16-32-64 行上自动设置 backgroundColor。

更新 2:在 cellForRow 我设置这个:

    if(indexPath.row == selectedFromIndex && indexPath.section == selectedFromSection){
cell.contentView.backgroundColor = UIColor(red: 0, green: 0, blue: 200, alpha: 0.1)
}else{
cell.backgroundColor = .clear
cell.isSelected = false
}

selectedFromIndex和selectedFromSection是didSelectRowMethod中保存的变量。选择仍然出现在第 8-16-32-64 行...

最佳答案

这与类型转换无关。您只需要一个 if 语句来检查该部分。

if indexPath.section == 0 { // 1 depending on which section you need
// get the cell and set the background color
}

但是当用户滚动时,这将失败。您应该在 didSelectRow 中做的是更新您的数据模型以跟踪哪些行已被选中以及哪些行应该获得不同的颜色背景,然后告诉 TableView 重新加载该行。

然后您在 cellForRowAt(或 willDisplay:forRowAt:)中的代码应该使用该数据根据需要设置单元格的颜色。

无论使用哪种方法,请确保根据需要设置或重置背景颜色,因为行会被重用:

// pseudo code:
if row is selected {
cell.backgroundColor = .someSelectedColor
} else {
cell.backgroundColor = .someUnselectedColor
}

关于swift - UITableViewCell 设置多个部分的 contentView backgroundColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58490682/

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