私は NSDocument (NSPersistentDocument) に基づくアプリケーションを持っています。アプリケーションでは、(通常のように) 複数のドキュメントを作成できます。
メイン ドキュメント ウィンドウ (NSPersistentDocument に基づく) には、IB、ツールバーが追加されています。insertItemWithItemIdentifier
コードでは、メソッドとを使用してツールバー項目 (NSToolbarItems) に追加します- (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;
}
}
ドキュメントを 1 つだけ開くまでは、すべて問題ありません。最初のドキュメント ウィンドウで 2 番目のドキュメントを開く (または新しいドキュメントを作成する) と、ツールバー アイテムが 2 倍になります (3 番目のドキュメントを開くと、アイテムは最初のウィンドウで 3 倍になり、2 番目のウィンドウで 2 倍になるなど)。
itemForItemIdentifier
編集:ツールバー項目を追加しようとするたびに、各ウィンドウで呼び出されることに気付きました。例: 2 つのウィンドウ (2 つの開いているドキュメント) があり、1 つのウィンドウに 1 つのボタンを追加しようとするitemForItemIdentifier
と、2 回呼び出されます。
すべてのドキュメントには、このドキュメントにのみデリゲートが設定された独自のツールバーがあるため、私には奇妙です。
私は自分が何を間違ったのか分かりません。誰かが私がどこを間違えたか指摘してくれるかもしれません。