2017-02-08 14 views
0

У меня есть интерфейс-конструктор 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

Вы должны установить делегат, либо в Interface Builder с помощью соединения (statusMenu>delegate к AppDelegate) или в коде в applicationDidFinishLaunching

self.statusMenu.delegate = self; 
+0

спасибо за быстрый и полезный ответ. Это сделал трюк! –