2017-02-08 54 views
0

我有一個Interface Builder NSMenu-Object。我添加了我的自定義類「StatusBarMenu」。NSMenu代表不會觸發menuWillOpen

StatusBarMenu.h文件看起來是這樣的:

@interface StatusBarMenu : NSMenu <NSMenuDelegate> 

StatusBarMenu.c文件看起來是這樣的:

- (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

感謝連接(statusMenu>delegateAppDelegate)或代碼。這個竅門! –