我有一个动态的表格视图。 它提供了整个月的特定信息。 每天都有自己的牢房。 并且目标是设置与今天相同日期的单元格的背景颜色。
首先。我正在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
如何解决此问题?预先感谢
答案 0 :(得分:1)
单元格被重用,如果您在特定条件下更改UI,则必须添加else
子句以设置默认值
class MonthlyTableViewCell: UITableViewCell {
if Date.nowDayAsInt == self.tag {
self.setDiagonalGradientBackground()
self.makeRoundedCorners()
} else {
// set default appearance
}
}