Как вручную выделить nspopupbuttoncell при рисовании (нарисуйте его, используя белый вместо черного)?

StackOverflow https://stackoverflow.com/questions/1162414

Вопрос

У меня есть пользовательская ячейка, изготовленная из нескольких ячеек, одна из которых - 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, этого должно быть достаточно, чтобы получить правильный фон для выбранных строк.

Если вы размещаете это в своем собственном взгляде, вам может потребоваться дополнительная работа. (И необходимо предоставить дополнительную информацию о хост -среде, прежде чем мы сможем предложить советы.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top