Я пытаюсь закодировать окно предпочтений с несколькими панелями с 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?
спасибо.