如何设置特定UITableViewCell的背景颜色
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何设置特定UITableViewCell的背景颜色相关的知识,希望对你有一定的参考价值。
我有一个动态的tableview。它提供了整整一个月的具体信息。每天都有自己的细胞。并且目标是设置与今天具有相同日期的单元格的背景颜色。
第一。我在cellForRow indexPath
中设置每个单元格的标签:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "MonthlyCell", for: indexPath)
guard let monthlyCell = cell as? MonthlyTableViewCell else {
fatalError("Designated cell couldn't found")
}
monthlyCell.tag = indexPath.row
return monthlyCell
}
我还有一个扩展名。这给了我今天的一天Int
:
extension Date {
static var nowDayAsInt: Int {
let calendar = Calendar.current
let component = calendar.dateComponents([.day], from: Date())
return component.day!
}
}
最后我在自己的类中更新自定义单元格的背景:
class MonthlyTableViewCell: UITableViewCell {
if Date.nowDayAsInt == (self.tag + 1) {
self.setDiagonalGradientBackground()
self.makeRoundedCorners()
}
}
self.setDiagonalGradientBackground()
和self.makeRoundedCorners()
也来自UIView
扩展,我认为名称是自我解释的。
结果:它始终设置两个或更多单元格背景颜色:
屏幕截图:https://imgur.com/a/FfzUgZO
我该如何解决这个问题?提前致谢
答案
单元格被重用,如果在特定条件下更改UI,则必须添加else
子句来设置默认值
class MonthlyTableViewCell: UITableViewCell {
if Date.nowDayAsInt == self.tag {
self.setDiagonalGradientBackground()
self.makeRoundedCorners()
} else {
// set default appearance
}
}
以上是关于如何设置特定UITableViewCell的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章
UITableViewCell未选中时如何将其背景视图设置为选中的背景?
如何将附件视图背景设置为与 UItableViewCell 中的内容视图相同的背景?