7

我在执行一些初始 Cocoa 编程时遇到了一些真正的困难。

本质上,我有一个NSStatusBar带有NSMenu附加菜单的项目。菜单有一个NMMenuItem. 在 IB 中,我已将 NSMenuItem 连接到NSObject本身设置为 ApplicationDelegate 的类;然后,我将收到的操作设置为IBActionApplicationDelegate 中的一个方法。我认为一切都正确连接,除非我运行程序并单击菜单项时IBAction不调用该方法。我真的好像搞不定。这是相关的代码。

应用程序委托 h 文件:

#import <Cocoa/Cocoa.h>

@interface sssAppDelegate : NSObject <NSApplicationDelegate> {
    IBOutlet NSMenu *statusMenu;
    NSStatusItem *statusItem;
}

- (IBAction)showPreferencePanel:(id)sender;

@end

应用程序委托 m 文件:

#import "sssAppDelegate.h"
@implementation sssAppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // Insert code here to initialize your application 
}

-(void)awakeFromNib{
    statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength] retain];
    [statusItem setMenu:statusMenu];
    [statusItem setTitle:@"Status"];
    [statusItem setHighlightMode:YES];
}


- (IBAction)showPreferencePanel:(id)sender {
    NSLog(@"Hello World!");
}

@end 

正如我所说,在 IB 中,我已将应用程序NSMenu委托中的当我运行它时没有任何反应!!!statusMenuNSStatusBarNSMenuItemNSMenuNSObject

我也以编程方式尝试过,但仍然无法调用 IBAction 方法。

编辑:我会附上一些屏幕截图来显示 IB 中的设置,但我还不允许。

包含添加到的菜单的主笔尖,NSStatusBar如下所示:

  • NSApplication
  • FRFirstResponder
  • 应用NSApplication
  • 字体管理器NSFontManager
  • 主菜单NSMenu
    • 菜单项(首选项) NSMenuItem
  • Sss 应用程序委托sssAppDelegate

NSMenuItem:

  • 发送操作 - showPreferencePanel--->Sss App Delegate

Sss 应用代表:

  • 奥特莱斯 - statusMenu--->Main Menu
  • 收到的操作 - showPreferencePanel:--->Main Item (Preferences)
4

1 回答 1

2

以编程方式,您是否尝试过:

[statusItem setTarget:someTarget];
[statusItem setAction:@selector(someSelector)];

它应该工作。

于 2013-02-25T21:52:35.823 回答