문제

Nstoolbaritem에서 팝업 메뉴를 열려고합니다. 나는 다음을 시도했다 이것 예를 들어 NSToolbar와 nstoolbaritem은 nsveject가 아닌 nsobject에서 상속되기 때문에 해당 클래스 방법을 사용할 수 없습니다.

사용자 정의보기를 만드는 것 외에도 nstoolbaritem에서 팝업 메뉴를 열는 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

참고 :이 게시물은 오래 걸렸지 만, 그냥 탐색하고 있으며 이것에 대한 쉬운 방법이 있으므로 다른 사람이 그것을 살펴볼 때 대답 할 것이라고 생각했습니다. 팝업 버튼을 라이브러리에서 인터페이스 빌더의 도구 모음으로 직접 드래그 할 수 없다는 것을 알았습니다. 그러나 팝업 버튼을 창에서 도구 모음으로 드래그 할 수 있습니다. 그래서 먼저 창에서 팝업 버튼을 만든 다음 툴바로 드래그합니다 ... 작동합니다! 다른 개체와 동일합니다.

다른 팁

기본적으로, 당신은 an과 같은 것을 만듭니다 NSButton 그것은 있습니다 NSMenu 그것에 첨부 한 다음 사용하십시오 NSToolbarItem'에스 setView: 도구 모음에 버튼을 포함시키는 메소드.

원하는 것처럼 메뉴로 IB에서 NSVIEW를 만듭니다. 그런 다음 창 컨트롤러에서 다음과 같은 코드를 추가하십시오.

// This assumes you have a window property pointing to the window to which you'll
// add the toolbar. It also assumes you've connected the NSView to add to the
// toolbar to a member called toolbarView.

- (NSArray*)toolbarAllowedItemIdentifiers:(NSToolbar*)toolbar {
    return [NSArray arrayWithObject:@"myToolbarMenu"];
}

- (NSArray*)toolbarDefaultItemIdentifiers:(NSToolbar*)toolbar {
    return [self toolbarAllowedItemIdentifiers:toolbar];
}

- (NSToolbarItem*)toolbar:(NSToolbar*)toolbar
    itemForItemIdentifier:(NSString*)str
willBeInsertedIntoToolbar:(BOOL)flag
{
    if ([str isEqualToString:@"myToolbarMenu"] == YES) {
        NSToolbarItem* item = [[NSToolbarItem alloc] initWithItemIdentifier:str];
        [item setView:toolbarView];
        [item setMinSize:[toolbarView frame].size];
        [item setMaxSize:[toolbarView frame].size];
        return [item autorelease];  
    }
    return nil;
}

- (void)windowDidLoad {
    NSToolbar* toolbar = [[NSToolbar alloc] initWithIdentifier:@"myToolbar"];
    [toolbar setDelegate:self];
    [self.window setToolbar:[toolbar autorelease]];
}

도구 모음 항목의 실제 팝업 버튼을 원한다면 NSPOPUPBUTTON을 도구 모음 항목의보기로 설정하십시오.

Interface Builder 3.2.1 (이 기능이 실제로 소개 된 시점은 모르겠습니다)에서는 NIB 창의 계층 구조 목록의 도구 모음으로 드릴링하고 라이브러리 팔레트에서 팝업 버튼을 끌 수 있습니다. 목록의 도구 모음. IB는 버튼을 도구 모음 항목으로 래핑합니다.

가정합니다 menu 이다 NSMenu 객체와 sender a NSToolbarItem, 그러면 당신이해야 할 일은 sender.view 메뉴를 보여줍니다. 이미 설정 한 경우 다른보기를 추가 할 필요가 없습니다. NSToolbarItem 인터페이스 빌더를 통해.

[NSMenu popUpContextMenu:menu
               withEvent:[NSApp currentEvent]
                 forView:sender.view];
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top