0

我在单独的 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方法的实现方式如下

- (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];
}

然后我在应用程序委托中创建并启动了 StatusMenu 实例,如下所示

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    statusMenu = [[StatusMenu alloc] init];
    statusMenu.user = self.user;
    [statusMenu show];
}

现在,我可以看到状态栏上的图标。但是当我点击图标时,没有响应发生。有什么问题?

4

1 回答 1

1

你通常不会继承NSMenu你想要做的事情。

你可以简单地创建另一个类(调用它MenuController或其他东西),将它放在你的故事板/xib 中,并在你的AppDelegate.

这是一个示例项目供您查看

于 2015-09-12T03:32:02.753 回答