我在一个单独的xib文件中创建了一个菜单资源,使其成为子类NSMenu,如下所示,并且该文件的所有者是StatusMenu
@interface StatusMenu : NSMenu
{
@private
IBOutlet NSMenuItem *menuitem1;
IBOutlet NSMenuItem *menuitem2;
}
- (IBAction)action1:(id)sender;
- (IBAction)action2:(id)sender;
- (void)show;
@end
show show以下列方式实现
- (void)show
{
NSImage *menuImage = [[NSImage alloc] initWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"myicon" ofType:@"png"]];
statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength] retain];
[statusItem setImage:menuImage];
[statusItem setMenu:self];
[statusItem setHighlightMode:YES];
}
然后我在app delegate中创建并启动了StatusMenu实例,如下所示
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
statusMenu = [[StatusMenu alloc] init];
statusMenu.user = self.user;
[statusMenu show];
}
现在,我可以看到状态栏上的图标。但是当我点击图标时,没有响应。可能有什么不对?
答案 0 :(得分:1)
您通常不会将NSMenu
子类化为您要执行的操作。
你可以简单地创建另一个类(称之为MenuController
或其他类),将它放在你的storyboard / xib中,并在你的AppDelegate
中找到它。