2009-02-19 10 views

Odpowiedz

13

Aby rozwinąć odpowiedź Chucka, wystarczy, że przekażesz swojemu kontrolerowi delegata swojego NSToolBar i zaimplementujesz pasek narzędzi. SelekcjaItemIdentyfikatory: deleguj w nim metodę. Na przykład następująca realizacja pozwoli Ci zachować zaznaczenie wyboru na każdej pozycji paska narzędzi z wyjątkiem jednego oznaczonego „Sprawdź”:

- (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]; 
} 

I buforować tablicę allIdentifiers w zmiennej instancji, gdy robię coś takiego, więc że muszę wykonać konstrukcję tylko raz.

+1

W konstruktorze interfejsów dla Xcode 4 jest teraz małe pole wyboru po kliknięciu elementu paska narzędzi, który mówi, że można go wybrać, ale sprawdzenie go wydaje się nic nie robić. jakieś pomysły? – Tony

+0

@ Tony - Po prostu wypróbowałem to samodzielnie w Interface Builder i działało dobrze dla mojej aplikacji, nawet bez powyższego kodu. Nie wiem, dlaczego to nie działa w twoim przypadku. –

+2

Okazuje się, że faktycznie trzeba podłączyć wszystkie elementy paska narzędzi do akcji, aby mogły one zostać "włączone". – Tony

8

Po utworzeniu paska narzędzi w Konstruktorze interfejsów można kliknąć poszczególne elementy NSToolbarItem i zaznaczyć pole wyboru w Inspektorze dla tych, które mają mieć taki wygląd. Brak kodu.

+0

Mam go wbudowany w budowniczy interfejs i zaznaczone pole wyboru jest zaznaczone, ale nic nie wydaje się zdarzyć. czy jest coś jeszcze, co należy zrobić? – Tony

+0

Nie mam pojęcia, wygląda na to, że w większości przypadków jest on uszkodzony w momencie ustawienia go w IB i może go uruchomić tylko z paskiem narzędziowym. SelekcjaItemIdentifiers – valexa