2010-11-19 1 views
2

Я пытаюсь закодировать окно предпочтений с несколькими панелями с NSToolbar, как видно из многих приложений Mac. Есть несколько руководств, которые делают это, программно заполняя панель инструментов, но для этого требуется много «механического» кода, который, как я думал, сэкономил, настроив всю панель инструментов в IB. Каждый элемент NSToolbar вызывает ниже действия и тег используется для выбора просмотра (ссылка из того же самого кончика пера с IBOutlet):Как установить состояние инициализации NSToolbar, используемое для окна предпочтений с несколькими панелями?

-(IBAction)changeViewController:(id) sender { 
    NSToolbarItem *tbi = (NSToolbarItem*)sender; 
    NSString* label = [tbi label]; 
    NSInteger tag = [tbi tag]; 
    [self displayViewController:tag]; 
    NSWindow* window = [self window]; 
    [window setTitle:label]; 
} 

Тогда я поставил Autovalidates на каждый NSToolbarItem, который даст выбранный/неустановленные посмотреть на элементы панели инструментов.

Теперь вот моя проблема: я не смог найти хороший способ установить начальное состояние. В тот момент, когда я открываю Окно, ни один из элементов панели инструментов не выбран, и я не получаю никакого udpate к коду, который позволил бы мне правильно выбрать это. То, что я придумал это:

- (void) awakeFromNib { 
    [self displayViewController:kGeneralPrefsTag]; 
    NSWindow* window = [self window]; 
    NSToolbar *toolbar = [window toolbar]; 
    [toolbar setSelectedItemIdentifier:@"generalPreferences"]; 
    [window setTitle:@"General"]; 
} 

Это вся избыточная информация: 1) Мне нужно объявить элемент Идентификаторы для элемента панели инструментов только для этого 2) Я вручную дублировать название 1-го предпочтения чтобы задать заголовок окна.

Есть ли лучший способ инициализации панели инструментов? Как я могу вызвать первый элемент панели инструментов так, чтобы он вызывал changeViewControllerAction?

спасибо.

ответ

5

Я использую панель инструментов, чтобы выбрать различные вкладки и используются следующие:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    [item1 setEnabled: YES]; 
    [toolbar setSelectedItemIdentifier: @"needItToolbarItem"]; 

    [item2 setEnabled: YES]; 
    [item3 setEnabled: YES]; 
    [item4 setEnabled: YES]; 
} 

Это, казалось, чтобы получить меня, что я хотел, не слишком много пустословия. Я не уверен, что это тот ответ, который вы ищете, но похоже, что вы были одним из правильных путей.

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