Non si dice quale vista o vista la gerarchia si sta utilizzando per le celle. Inoltre, non dici come o dove stai impostando il colore dei campi di testo o di quale colore, in particolare.
Quando si seleziona una riga, la riga calcola automaticamente il valore interiorBackgroundStyle
. Imposta anche il backgroundStyle
della visualizzazione cella se risponde a -setBackgroundStyle:
o è un NSControl
con una cella che risponde a tale.
Se la vista cella è un'istanza di NSTableCellView
, inoltra lo stile di sfondo a tutte le sue sottoview che soddisfano gli stessi criteri. Se si utilizza una vista contenitore diversa come visualizzazione cella e si desidera inoltrare lo stile di sfondo in questo modo, è necessario implementarlo nella classe di visualizzazione.
La cella di NSTextField
(NSTextFieldCell
) risponde a -setBackgroundStyle:
e pertanto il suo stile di sfondo viene impostato automaticamente dai meccanismi di cui sopra. La cella del campo di testo cambierà automaticamente il colore del suo testo in bianco se il suo textColor
è uno dei colori di controllo standard (ad esempio NSColor.controlTextColor()
), ma non lo farà se assegni un colore non standard. Quindi, se stai impostando un colore specifico per il tuo testo, sei responsabile di cambiarlo quando cambia lo stile di sfondo.
È possibile utilizzare una sottoclasse di NSTableCellView
e aggiungere un osservatore di proprietà (didSet
) per la proprietà backgroundStyle
. Questo può cambiare il campo di testo textColor
a seconda dello stile che è stato impostato. Ad esempio, è possibile utilizzare il colore personalizzato se lo stile di sfondo non è .Dark
o utilizzare il normale colore del campo di testo NSColor.controlTextColor()
se è .Dark
(in modo che il campo di testo lo visualizzi effettivamente come bianco).
Si potrebbe anche utilizzare una sottoclasse di NSTextFieldCell
per il campo di testo e fare lo stesso genere di cose. Oppure eseguire l'override di drawInteriorWithFrame(_:inView:)
per disegnare con un colore di testo diverso a seconda dello stile di sfondo.
fonte
2015-04-25 01:53:27
Nella tabellaView: viewForTableColumn: row: metodo delegate Lo sto facendo per impostare il colore del campo di testo nella mia cella basata sulla vista: cell.textField! .textColor = NSColor.redColor(). Le celle impostate su blackColor() invertono semplicemente bene, ma redColor() no. La tua risposta richiederà un po 'di tempo per capire, quindi grazie per avermi dato alcune idee da esaminare. –
Amico, controllerò, ma se funziona, tu sei il mio salvatore !! AppKit è così strano quando viene da UIKit :) – Frizlab
Funziona! \ o/Fantastico. – Frizlab