응용 프로그램에서 NSDocument (NSPersistentDocument)를 기반으로 응용 프로그램을 만들었으므로 둘 이상의 문서를 (보통) 만들 수 있습니다.NSDocument 기반 응용 프로그램 및 NSToolbar
기본 문서 창 (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
이 두 번 호출됩니다.
모든 문서에는이 문서에만 설정된 대리인이 포함 된 고유 한 도구 모음이 있으므로 저에게 이상합니다.
내가 잘못했는지 전혀 알지 못합니다. 어쩌면 누군가 내가 실수 한 부분을 지적 할 것입니다.
답장을 보내 주셔서 감사합니다. 그러나 나를위한 옵션이 아니므로 툴바 항목을 제어해야합니다. 하지만 해결책을 찾았습니다. –
나는 위의 솔루션을 사용하여 끝났다. 플러그인이 툴바 항목을 추가하도록 허용합니다. 이를 허용하기 위해 insertItemWithItemIdentifier는 각각의 새 도구 모음 항목에 대해 한 번만 호출되고 각 문서의 대리자 메서드는 동일한 반환 값을 갖기 때문에 추가 한 nstoolbaritems를 기억하는 싱글 톤을 유지했습니다 (위임 메서드의 반환 값). 식별자 목록. 툴바 : itemForItemIdentifier 위임 메소드는 툴바에 추가되는 항목의 복사본을 생성하므로 여기에 올바른 문서의 액션과 대상을 설정할 수 있으며 다른 사용자를 재정의하지 않습니다. –