2009-02-19 2 views

ответ

13

Чтобы расширить ответ на вопрос Чак, вам просто нужно сделать свой контроллер делегатом вашего NSToolBar и реализовать панель инструментовSelectableItemIdentifiers: в ​​нем делегировать метод. Например, следующая реализация позволит вам сохранить выделение выбора на любой элемент панели инструментов для одного меченого «Проверить», за исключением:

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

Я кэшировать массив allIdentifiers в переменной экземпляра, когда я делаю что-то вроде этого, так что мне нужно только сделать конструкцию массива один раз.

+1

В интерфейсном построителе для Xcode 4 теперь есть небольшая галочка, когда вы нажимаете на элемент панели инструментов, который говорит по выбору, но проверка его, кажется, ничего не делает. есть идеи? – Tony

+0

@Tony - просто попробовал это сам в Interface Builder, и он отлично работал для моего приложения, даже без вышеуказанного кода. Не уверен, почему это не работает в вашем случае. –

+2

получается, что вам действительно нужно подключить все элементы панели инструментов к действию, чтобы они стали «включенными». – Tony

8

Если вы создали свою панель инструментов в Interface Builder, вы можете щелкнуть по отдельным элементам NSToolbar и проверить поле Selectable в Inspector для тех, которые вы хотите получить. Не требуется код.

+0

У меня он встроен в построитель интерфейсов и установлен флажок по выбору, но ничего не происходит. есть ли что-нибудь еще, что нужно сделать? – Tony

+0

Понятия не имею, кажется, что в большинстве случаев он нарушается при установке в IB, я могу заставить его работать с toolbarSelectableItemIdentifiers – valexa

Смежные вопросы