我有基于 NSDocument (NSPersistentDocument) 的应用程序,在应用程序中我可以(通常)创建多个文档。
主文档窗口(基于 NSPersistentDocument)已添加 IB、工具栏。在代码中,我使用方法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
被调用两次。
这对我来说很奇怪,因为每个文档都有自己的工具栏,其中委托仅设置为此文档。
我不知道我做错了什么。也许有人会指出我犯错的地方。