Я пытаюсь закодировать окно настроек нескольких панелей с помощью NSToolbar, как видно во многих приложениях Mac.Есть несколько учебных пособий, которые делают это путем программного наполнения панели инструментов, но для этого требуется большой «механический» код, который я решил сохранить, настроив всю панель инструментов в IB.Каждый элемент NSToolbar вызывает действие, указанное ниже, и тег используется для выбора вида (на который ссылается тот же перо с IBOutlet):
-(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, который будет давать выбранный / отмененный выборпосмотрите на элементы панели инструментов.
Теперь вот моя проблема: я не смог найти хороший способ установить начальное состояние.В тот момент, когда я открываю окно, ни один из элементов панели инструментов не выбирается, и я не получаю никакого обновления кода, который позволил бы мне выбрать его правильно.Я придумал вот что:
- (void) awakeFromNib {
[self displayViewController:kGeneralPrefsTag];
NSWindow* window = [self window];
NSToolbar *toolbar = [window toolbar];
[toolbar setSelectedItemIdentifier:@"generalPreferences"];
[window setTitle:@"General"];
}
Это все избыточная информация: 1) Мне нужно объявить идентификаторы элементов для элемента панели инструментов только для этого 2) Я вручную продублирую имя 1-го предпочтенияпанель, чтобы иметь возможность установить заголовок окна.
Есть ли лучший способ инициализировать панель инструментов?Как я могу вызвать первый элемент панели инструментов, чтобы он вызывал changeViewControllerAction?
спасибо.