2011-11-05 21 views
9

Ho un progetto che ha bisogno di abilitare/disabilitare alcune NSToolbarItems dipende dalle diverse opzioni. Ho controllato e non ho trovato alcun parametro per questo.come abilitare/disabilitare NSToolbarItem

C'è un modo per attivare/disattivare NSToolbarItem?

risposta

9

Implementare NSToolbarItemValidation protocollo nella finestra, vista o il controller del documento. La documentazione fornisce il seguente codice di esempio:

-(BOOL)validateToolbarItem:(NSToolbarItem *)toolbarItem { 

    BOOL enable = NO; 
    if ([[toolbarItem itemIdentifier] isEqual:SaveDocToolbarItemIdentifier]) { 

     // We will return YES (enable the save item) 
     // only when the document is dirty and needs saving 
     enable = [self isDocumentEdited]; 

    } else if ([[toolbarItem itemIdentifier] isEqual:NSToolbarPrintItemIdentifier]) { 

     // always enable print for this window 
     enable = YES; 
    } 
    return enable; 
} 

È inoltre possibile utilizzare action o tag per determinare quale oggetto barra degli strumenti che viene convalidato. Gli articoli vengono convalidati frequentemente, ogni volta che la tua app viene attivata o gli eventi vengono inviati, quindi saranno sempre in uno stato valido.

7

c'è una soluzione più semplice:

-(BOOL)validateToolbarItem:(NSToolbarItem *)toolbarItem 
{ 

    return [toolbarItem isEnabled] ; 
} 

in questo modo è possibile usare [yourToolBarItem setEnabled: SI/NO]; nel tuo codice.

+1

Idea geniale! –

+1

pulito e bello, avere in una classe di tessuto –

2

un modo semplice per fare questo in rapida, o si potrebbe porta questo per Objective C è quello di impostare solo le azioni

Questo Disabilita la voce

Mytoolbar.action = nil 

Questo riattiva lo

Mytoolbar.action = "Name of a function" 

In questo modo si vorrebbe sostituire l'IBAction con la funzione in modo

@IBAction func blehbleh(sender: AnyObject){ Stuff } 

sarebbe cambiato per

func blehbleh(){ Stuff } 
0

Come nsij22 detto è necessario impostare l'azione.

In Storyboard semplicemente Ctrl + trascinare dalla voce barra degli strumenti per la vostra azione codice.