Come faccio a evidenziare manualmente un NSPopUpButtonCell nell'elaborazione esso (disegnare usando bianco invece che nero)?

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

Domanda

Ho una cella personalizzato, composto da diverse celle, uno dei quali è un NSPopUpButtonCell.

Quando si disegna la mia cella personalizzato evidenziato, voglio causare tutti i sotto-cellule per evidenziare così (tipicamente girando bianco).

Con, ad esempio un NSTextCell, se chiamo setHighlighted:YES prima di chiamare la cellula drawWithFrame:inView saranno rappresentate con testo bianco, esattamente come lo voglio.

Questo non funziona con NSPopUpButtonCells. Il testo continua solo a disegnare in nero.

Sembra che questo dovrebbe essere possibile, dal momento che far cadere un NSPopUpButtonCell in un NSTableView mette in evidenza in modo corretto.

Qualcuno mi può punto nella giusta direzione per il fissaggio di questo?

È stato utile?

Soluzione

Dove stai ospitando questa composita sottoclasse NSCell personalizzato +?

-setHighlighted: SI non è quello che stai cercando. Dalla documentazione:

  

Per impostazione predefinita, questo metodo non fa nulla.   La classe NSButtonCell sovrascrive questo   metodo per disegnare il pulsante con il   aspetto specificato da   NSCellLightsByBackground,   NSCellLightsByContents, o   NSCellLightsByGray.

In genere la visualizzazione host per una cella imposterà stile di sfondo della cella, e la cella userà che al momento sorteggio per visualizzare se stessa in modo appropriato. Propagare la stile di sfondo della cella master alle sotto-cellule.

- (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];
}

Se si ospitano questa cellula composita in un NSTableView, che dovrebbe essere sufficiente per ottenere lo sfondo corretto per le righe selezionate.

Se si ospitano questo nel vostro punto di vista, potrebbe essere necessario fare un lavoro supplementare. (E la necessità di fornire ulteriori informazioni circa l'ambiente host prima di poter offrire una consulenza.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top