Я использую NSTableView на основе представления, и я столкнулся с небольшой проблемой.NSTableView Cell Display Issue
Я пытаюсь переключить цвет текста моих двух меток от черного до белого, когда выделено.
Чтобы сделать это, я написал следующий код,
- (void)tableViewSelectionDidChange:(NSNotification *)notification
{
NSView * viewInQuestion = [table viewAtColumn:0 row:[table selectedRow] makeIfNecessary:YES];
if ([viewInQuestion isNotEqualTo:lastViewSelected])
{
[(NSTextField*)lastViewSelected.subviews.lastObject setTextColor:NSColor.blackColor];
[(NSTextField*)[lastViewSelected.subviews objectAtIndex:1] setTextColor:NSColor.grayColor];
}
[(NSTextField*)viewInQuestion.subviews.lastObject setTextColor:NSColor.whiteColor];
[(NSTextField*)[viewInQuestion.subviews objectAtIndex:1] setTextColor:NSColor.whiteColor];
lastViewSelected = viewInQuestion;
}
Это прекрасно работает; Я получаю этот результат:
Вопрос заключается в том, что иногда текст не появляется белым, даже при том, что NSLog сказала мне, что цвет NSTextField был NSCalibratedWhite (или как там это называется).
Цвет также переключается обратно на черный, когда текстовый экран не виден (прокрутка от него, а затем назад). Опять же, даже когда он делает это, цвет NSTextField по-прежнему записывается как белый.
Изменения ответа на решение, это не совсем оптимальное для обработки стилей фона, как я сделал. – evdude100