Sto sottoclassi NSButtonCell per personalizzare il disegno (tema personalizzabile). Mi piacerebbe personalizzare il modo in cui vengono disegnate le caselle di controllo e i pulsanti di opzione.Come scoprire se sono un NSButton con buttonType NSSwitchButton?
Qualcuno sa come rilevare se un pulsante è una casella di controllo o un pulsante di opzione?
C'è solo -setButtonType :, nessun getter, né -showsStateBy né -highlights. Sembra che fornisca valori di ritorno univoci per le caselle di controllo che non si applicano anche ai pulsanti normali con immagini e immagini alternative.
Finora ho trovato due (non molto carina) soluzioni alternative, ma sono il genere di cosa che sarebbe probabilmente ottenere l'applicazione respinto dal MAS:
Usa [auto valueForKey: @ "ButtonType"]. Funziona, ma dal momento che il metodo non è nelle intestazioni, presumo che questo sia qualcosa che Apple non vorrebbe che facessi.
Override -setButtonType: and -initWithCoder: per tenere traccia del tipo di pulsante quando è impostato manualmente o da XIB. Il problema qui è il caso XIB, perché le chiavi utilizzate per salvare il tipo di pulsante su disco non sono documentate. Quindi, di nuovo, utilizzerei l'API privata.
Mi piacerebbe davvero come questo per essere un rimpiazzo dritto per NSButtonCell invece di costringere il codice client per utilizzare una classe ULIThemeSwitchButtonCell separata per le caselle di controllo e una terza per i pulsanti di opzione.
Per quel che vale, '[sé valueForKey: @ "ButtonType"]' non funziona su OS 10.7, genera un'eccezione chiave non definita. – JWWalker