我在执行一些初始 Cocoa 编程时遇到了一些真正的困难。
本质上,我有一个NSStatusBar
带有NSMenu
附加菜单的项目。菜单有一个NMMenuItem
. 在 IB 中,我已将 NSMenuItem 连接到NSObject
本身设置为 ApplicationDelegate 的类;然后,我将收到的操作设置为IBAction
ApplicationDelegate 中的一个方法。我认为一切都正确连接,除非我运行程序并单击菜单项时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
委托中的当我运行它时没有任何反应!!!statusMenu
NSStatusBar
NSMenuItem
NSMenu
NSObject
我也以编程方式尝试过,但仍然无法调用 IBAction 方法。
编辑:我会附上一些屏幕截图来显示 IB 中的设置,但我还不允许。
包含添加到的菜单的主笔尖,NSStatusBar
如下所示:
- 佛
NSApplication
- FR
FirstResponder
- 应用
NSApplication
- 字体管理器
NSFontManager
- 主菜单
NSMenu
- 菜单项(首选项)
NSMenuItem
- 菜单项(首选项)
- Sss 应用程序委托
sssAppDelegate
NSMenuItem:
- 发送操作 -
showPreferencePanel
--->Sss App Delegate
Sss 应用代表:
- 奥特莱斯 -
statusMenu
--->Main Menu
- 收到的操作 -
showPreferencePanel:
--->Main Item (Preferences)