У меня есть приложение на основе NSDocument (NSPersistentDocument), в приложении я могу создать (как обычно) более одного документа.
В главном окне документа (на основе NSPersistentDocument) добавлена панель инструментов IB. В коде я добавляю элемент на панель инструментов (NSToolbarItems) с помощью методов insertItemWithItemIdentifier
и - (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag
.
Примеры кода:
[_toolbar insertItemWithItemIdentifier:@"addTape" atIndex:2];
и
- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag {
NSToolbarItem *item =nil;
if ([itemIdentifier isEqual:@"addTape"]) {
item = [[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier];
item.label = NSLocalizedString(@"Add Tape",@"Add Tape");
item.paletteLabel = NSLocalizedString(@"Add Tape",@"Add Tape");
item.toolTip = NSLocalizedString(@"Adds new tape",@"Adds new tape");
item.image = [NSImage imageNamed:@"NSAddTemplate"];
item.target = self;
item.action = @selector(addTape:);
item.tag = 101;
}
}
Все правильно, пока я не открыл только один документ. Когда я открываю второй документ (или создаю новый документ) в окне первого документа, элементы панели инструментов удваиваются (после открытия третьего документа элементы утраиваются в первом окне и удваиваются во втором и т. Д.).
Изменить: я заметил, что itemForItemIdentifier
вызывается в каждом окне каждый раз, когда я пытаюсь добавить элемент на панель инструментов. В примере: если у меня есть два окна (два открытых документа) и в одно я пытаюсь добавить одну кнопку, itemForItemIdentifier
вызывается два раза.
Это странно для меня, потому что каждый документ имеет собственную панель инструментов с делегатом, установленным только для этого документ.
Я понятия не имею, что сделал не так. Может кто укажет мне, где я ошибся.