Как вручную выделить nspopupbuttoncell при рисовании (нарисуйте его, используя белый вместо черного)?
-
18-09-2019 - |
Вопрос
У меня есть пользовательская ячейка, изготовленная из нескольких ячеек, одна из которых - nspopupbuttoncell.
При рисунке моей индивидуальной ячейки я хочу, чтобы все суб-подключения также подчеркивали (обычно путем белого цвета).
С, например, nstextcell, если я позвоню setHighlighted:YES
перед звонком drawWithFrame:inView
Ячейка будет нарисована с белым текстом, точно так же, как я хочу.
Это не работает с nspopupbuttoncells. Текст продолжает рисовать как черный.
Похоже, что это должно быть возможно, так как сбрасывание nspopupbuttoncell в NstableView правильно.
Кто -нибудь может указать мне в правильном направлении для исправления?
Решение
Где вы размещаете этот пользовательский подкласс NSCELL?
-sethighlighted: Да, не то, что вы ищете. Из документации:
По умолчанию этот метод ничего не делает. Класс NSButtonCell переопределяет этот метод, чтобы нарисовать кнопку с появлением, указанным NSCelllightSbybackground, NscelllightSbyContents или NSCelllightSbygray.
Обычно представление хоста для ячейки устанавливает стиль фона ячейки, и ячейка будет использовать его во время рисования для соответствующего отображения. Распространение стиля фона из главной ячейки в подэлементы.
- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
NSRect textRect, popUpRect;
NSDivideRect(cellFrame, &textRect, &popUpRect, NSWidth(cellFrame) / 2, NSMinXEdge);
/* Draw the text cell (self) */
[super drawInteriorWithFrame: textRect inView: controlView];
/* Draw our compound popup cell - create & release every time drawn only in example */
NSPopUpButtonCell *popUpCell = [[NSPopUpButtonCell alloc] initTextCell: @"popup title"];
[popUpCell setBordered: NO];
[popUpCell setBackgroundStyle: [self backgroundStyle]];
[popUpCell drawWithFrame: popUpRect inView: controlView];
[popUpCell release];
}
Если вы размещаете эту составную ячейку в NSTABLEVIEW, этого должно быть достаточно, чтобы получить правильный фон для выбранных строк.
Если вы размещаете это в своем собственном взгляде, вам может потребоваться дополнительная работа. (И необходимо предоставить дополнительную информацию о хост -среде, прежде чем мы сможем предложить советы.)