Переопределить setBackgroundStyle: на NSTableCellView, чтобы знать, когда меняется фон, что влияет на то, какой цвет текста вы должны использовать в своей ячейке.
Например:
- (void)setBackgroundStyle:(NSBackgroundStyle)style
{
[super setBackgroundStyle:style];
// If the cell's text color is black, this sets it to white
[((NSCell *)self.descriptionField.cell) setBackgroundStyle:style];
// Otherwise you need to change the color manually
switch (style) {
case NSBackgroundStyleLight:
[self.descriptionField setTextColor:[NSColor colorWithCalibratedWhite:0.4 alpha:1.0]];
break;
case NSBackgroundStyleDark:
default:
[self.descriptionField setTextColor:[NSColor colorWithCalibratedWhite:1.0 alpha:1.0]];
break;
}
}
В табличных представлениях списка источников фоновый стиль представления ячейки установлен на Light, как и backgroundStyle его textField, однако textField также рисует тень под своим текстом и еще не нашел, что именно контролирует это / определяет, должно ли оно случается.