2014-12-12 11 views
9

Sono riuscito a ottenere gli attributi IBDesignable/IBInspectable che funzionano con dirette sottoclassi di NSView ma non con una sottoclasse diretta di NSButton. Questo mi induce a chiedermi se, in effetti, l'implementazione di Cocoa sia in qualche modo limitata allo NSView.Il nuovo attributo IBDesignable di Interface Builder funziona con NSButton e altri controlli in Cocoa?

Quasi tutti gli esempi sul web (e di Apple WWDC 2014 il video Xcode) utilizzare NSView e quindi trascinare un componente visualizzazione personalizzata dalla libreria sulla tela (e quindi cambiare la sua classe).

È possibile utilizzare IBDesignable con sottoclassi di NSControl e NSButton ecc ...? Ho visto molti esempi sul web usando UIButton.

Se è possibile, cosa si suppone trascinare dalla libreria sulla tela? Non ha senso che sia una "vista personalizzata". D'altra parte, non esiste un "controllo personalizzato" disponibile.

Per essere chiari, posso ottenere l'attributo IBInspectable da mostrare in fase di progettazione; ma eventuali modifiche non sembrano vivere in rendering in fase di progettazione.

La soluzione è quella di avvolgere qualsiasi personalizzato NSButton voglio creare all'interno di un NSView (tramite composizione), ma questo mi sembra un po 'di hack ...

+0

Hai trovato qualche soluzione? – ZevsVU

risposta

0

Ho iniziato a suonare in giro con un costume NSButton e NSButtonCell.

Trascinare un pulsante dalla libreria sull'area di disegno e modificarne la classe e la classe di celle non esegue il rendering. Penso che questo sia dovuto al fatto che Interface Builder fa ancora un sacco di cose personalizzate da configurare NSButtonCell.

Ciò che funziona per me è trascinare una vista personalizzata dalla libreria sulla tela e impostarne la classe. Per far funzionare questo è necessario impostare la cella all'interno di NSButtons -initWithCoder:.

Inoltre ho trovato uno sample da Apple con una casella di controllo personalizzata con layer.

+1

Puoi approfondire "Per far funzionare questo è necessario impostare la cella all'interno di NSButtons -initWithCoder:" e perché questo funziona. La documentazione recente di Apple dice di non toccare il pulsanteCell così non ho prestato molta attenzione agli argomenti "di cella". Grazie. – Sam

+1

Inoltre, perché funziona l'esempio di Apple? – Sam

+0

qualcuno ha questo campione? Ho un errore "Mi dispiace, quella pagina non può essere trovata." = ( – ZevsVU

Problemi correlati