2009-02-19 15 views

risposta

13

Per espandere la risposta di Chuck, è sufficiente configurare il controller come delegato di NSToolBar e implementare la barra degli strumentiSelectableItemIdentifiers: metodo delegate. Ad esempio, la seguente implementazione vi permetterà di mantenere l'evidenziazione di selezione su ogni articolo barra degli strumenti ad eccezione di quello con l'etichetta "Controllare":

- (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar 
{ 
    NSMutableArray *allIdentifiers = [[NSMutableArray alloc] init]; 

    for (NSToolbarItem *toolbarItem in [toolbar items]) 
    { 
     if (![[toolbarItem label] isEqualToString:@"Inspect"]) 
      [allIdentifiers addObject:[toolbarItem itemIdentifier]]; 
    } 

    return [allIdentifiers autorelease]; 
} 

ho caché la matrice allIdentifiers in una variabile di istanza quando faccio qualcosa di simile, in modo da che devo fare solo una volta la costruzione dell'array.

+1

Nel builder di interfaccia per Xcode 4 ora c'è una piccola casella di controllo quando si fa clic su un elemento della barra degli strumenti che dice selezionabile, ma il controllo sembra non fare nulla. qualche idea? – Tony

+0

@Tony - Ho appena provato questo in Interface Builder e ha funzionato bene per la mia applicazione, anche senza il codice precedente. Non sono sicuro del motivo per cui non funziona nel tuo caso. –

+2

si scopre che in realtà è necessario collegare tutti gli elementi della barra degli strumenti a un'azione che diventa 'abilitata' – Tony

8

Se è stata creata la barra degli strumenti in Interface Builder, è possibile fare clic sui singoli NSToolbarItems e selezionare la casella selezionabile nell'Inspector per quelli che si desidera avere. Nessun codice necessario.

+0

L'ho incorporato nel builder dell'interfaccia e ho spuntato la casella di controllo selezionabile, ma non sembra accadere nulla. c'è qualcos'altro che deve essere fatto? – Tony

+0

Non ho idea, sembra essere rotto nella maggior parte dei casi quando lo si imposta in IB posso solo farlo funzionare con toolbarSelectableItemIdentifiers – valexa

Problemi correlati