为什么NSMenu的子类没有响应?

时间:2011-06-02 21:17:10

标签: cocoa subclass nsmenu

我在一个单独的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];
}

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

1 个答案:

答案 0 :(得分:1)

您通常不会将NSMenu子类化为您要执行的操作。

你可以简单地创建另一个类(称之为MenuController或其他类),将它放在你的storyboard / xib中,并在你的AppDelegate中找到它。

Here`s a sample project for you to check out