继承自NSTableCellView,重写backgroundStyle方法,此方法在 cell 选中状态改变时会出发,在将要赋值的方法里,判断当前 cell 所在的行的选中状态,如果当前行被选中了,则更改 cell 文本的颜色,如果没有选中,则重置为默认颜色。
注意:事实证明,在 didSet 改变颜色会有延迟,因此在 willSet 中设置效果要好很多。
class CSTableCellView: NSTableCellView {
override var backgroundStyle: NSView.BackgroundStyle {
willSet {
if let row = self.superview as? NSTableRowView{
if row.isSelected {
self.textField?.textColor = NSColor(red: 0.20, green: 0.85, blue: 0.99, alpha: 1.00)
}else {
self.textField?.textColor = NSColor.white
}
}
}
}
}