2009-06-06 13 views

risposta

3

NSTabView non è la classe più personalizzabile in Cocoa, ma è possibile creare una sottoclasse e creare il proprio disegno. Non utilizzerai molte funzionalità dalla superclasse oltre a mantenere una collezione di elementi di visualizzazione a schede e finirai per implementare un numero di metodi NSView e NSResponder per far funzionare correttamente la gestione di disegni e eventi.

Potrebbe essere meglio guardare una delle scheda della barra comandi libero o open source prima, ho usato PSMTabBarControl in passato, ed era molto più facile di attuare il mio punto di vista scheda sottoclasse (che è quello che era sostituzione).

3

Ho recentemente fatto questo per qualcosa su cui stavo lavorando.

Ho terminato di utilizzare una vista tabless tab e quindi di disegnare le schede da solo in un'altra vista. Volevo che le mie schede facessero parte di una barra di stato nella parte inferiore della finestra.

Ovviamente è necessario supportare i clic del mouse che è abbastanza facile, ma è necessario assicurarsi che anche il supporto per la tastiera funzioni, e questo è un po 'più complicato: è necessario eseguire i timer per cambiare scheda dopo l'accesso senza tastiera dopo mezzo secondo (dai un'occhiata al modo in cui OS X lo fa). L'accessibilità è un'altra cosa a cui dovresti pensare ma potresti trovarlo solo funziona - non l'ho ancora controllato nel mio codice.

4

è possibile impostare lo stile del NSTabView di marcaggio e poi controllarlo con un NSSegmentedControl che sottoclassi NSSegmentedCell per sovrascrivere stile e comportamento. Per un'idea su come eseguire questa operazione, consulta questo progetto che emula le schede in stile Xcode 4: https://github.com/aaroncrespo/WILLTabView/.

0

È molto semplice utilizzare un NSSegmentedCell separato per controllare la selezione della scheda in un NSTabView. Tutto ciò di cui hai bisogno è una variabile di istanza a cui possono essere associati entrambi, nel Proprietario del file o in qualsiasi altra classe di controller visualizzata nel file del pennino. Basta mettere qualcosa di simile nel declaraton classe di interfaccia:

@property NSInteger selectedTabIndex; 

Poi, nel Associazioni ispettore IB, legano l'indice selezionato sia del NSTabView e NSSegmentedCell allo stesso selectedTabIndex proprietà.

Questo è tutto ciò che devi fare! Non è necessario inizializzare la proprietà a meno che non si desideri che l'indice di tabulazione predefinito selezionato sia diverso da zero. È possibile mantenere le schede o rendere il tableau NSTabView, funzionerà in entrambi i modi. I controlli rimarranno sincronizzati indipendentemente da quale controllo modifica la selezione.

Problemi correlati