2017-02-08 4 views
0

인터페이스 작성기 NSMenu-Object가 있습니다. 내 사용자 정의 클래스 "StatusBarMenu"를 추가했습니다.NSMenu 대리자가 menuWillOpen을 트리거하지 않습니다.

StatusBarMenu.h 파일은 다음과 같습니다 :

StatusBarMenu.c 파일은 다음과 같습니다
@interface StatusBarMenu : NSMenu <NSMenuDelegate> 

:

- (void)menuWillOpen:(NSMenu *)menu { 
    `NSLog(@"open");` 
} 

다음과 같이 메뉴가 AppDelegate.c에 할당됩니다

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    self.statusBar = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength]; 
    self.statusBar.highlightMode = YES; 
    [self.statusBar setMenu:self.statusMenu]; 
} 

을 그리고 AppDelegate.h :

#import <Cocoa/Cocoa.h> 
#import "StatusBarMenu.h" 
@interface AppDelegate : NSObject <NSApplicationDelegate> 
@property (strong, nonatomic) NSStatusItem *statusBar; 
@property (weak) IBOutlet StatusBarMenu *statusMenu; 

메뉴가 열리지 만 menuWillOpen이 호출되지 않습니다. 나는 무엇이 있 었는가?

감사합니다. 감사합니다. .

답변

1

당신은 신속하고 유용한 답변을 applicationDidFinishLaunching

self.statusMenu.delegate = self; 
+0

덕분에 코드의 연결 (AppDelegatestatusMenu>delegate) 또는하여 인터페이스 빌더에서 중, 대리인을 설정해야합니다. 이것은 트릭을했다! –

관련 문제