离开collectionviewcell的奇怪的错误
我有一个由collectionView
组成的calendarView
。 这是一个使用math计算导出的自定义calendarView
。 第七行标记星期六,这是假期,所以第七列的所有标签的字体颜色是红色的。 但是,当我滑动或导航到其他日子时,红色标签以无法追踪的随机顺序分散。 截图如下:
这是怎么发生的? 在我的dequeueReusableCell
方法中,我将dequeueReusableCell
单元格configuration为:
cell.isHoliday = (indexPath.row + 1) % 7 == 0 ? true : false
这是我的自定义collectionViewCell
假期的逻辑。
@IBOutlet var dateLabel: UILabel! @IBOutlet var englishDateLabel: UILabel! @IBOutlet var tithiLabel: UILabel! var isToday: Bool = false { didSet { self.contentView.backgroundColor = isToday ? Colors.Palette.LightGreen : UIColor.white } } var isHoliday: Bool = false { didSet { if isHoliday { tithiLabel.textColor = Colors.Palette.DarkRed dateLabel.textColor = Colors.Palette.DarkRed englishDateLabel.textColor = Colors.Palette.DarkRed } else { dateLabel.textColor = UIColor.black englishDateLabel.textColor = UIColor.black } } }
当我滑动到下个月时,每个collectionview单元格顶部的红色标签数量不断增加。 为什么发生这种情况,我怎样才能阻止这种情况发生?
你缺less其他部分:
var isHoliday: Bool = false { didSet { if isHoliday { tithiLabel.textColor = Colors.Palette.DarkRed dateLabel.textColor = Colors.Palette.DarkRed englishDateLabel.textColor = Colors.Palette.DarkRed } else { tithiLabel.textColor = UIColor.black dateLabel.textColor = UIColor.black englishDateLabel.textColor = UIColor.black } } }
这可能是因为单元格正在被重用,而且您没有在您的自定义单元类的prepareForReuse方法中实现任何逻辑。 在这种方法尝试设置文字颜色属性为零。
处理重用单元格中显示的旧数据的正确方法是覆盖自定义单元格中的prepeareForReuse
open override func prepareForReuse() { super.prepareForReuse() tithiLabel.textColor = UIColor.black dateLabel.textColor = UIColor.black englishDateLabel.textColor = UIColor.black }
清除旧值(通过将它们分配给nil
)或将默认值设置为在单元重用之后可能不一定设置的所有值。 这样,即使新值没有明确地设置到单元格中,您也确定旧值不会被保留。
- UISplitViewController:如何通过button事件而不是通过滑动手势在详细视图中呈现主视图
- 从故事板中初始化的UIViewController调用方法 – 目标c
- 将predicateWithFormat中的参数作为parameter passing给谓词
- 在iPhone 6s上的一个three.jsvideo的例子没有工作(只有黑色面板)
- 为什么当我单击Objective-C中的button图像时,发件人未被调用?
- Angular 5应用程序无法在ios8中工作(Browserstack)
- parsingPFQuery whereKey:notEqualTo不能用于PFUser对象
- 在Swift数组下标索引中的错误?
- 防止UIPageViewController的滑动影响UISlider