我正在创建一个对象:
NSMenu *appMainMenu = [[NSMenu alloc] initWithTitle:@"MyApp"];
(忽略我正在以编程方式创建此菜单而不使用Nib文件的事实。我理解这样做的缺点)
菜单在菜单栏中正确显示。
但是,当我尝试调用任何实例方法时,例如:
[appMainMenu addItemWithTitle:@"MyTitle" action:@selector(myaction:) keyEquivalent:@"t"];
XCode提供了一些完成,但似乎都没有来自NSMenu 我试过了两个
#import <AppKit/AppKit.h> and #import <AppKit/NSMenu.h>
实例方法肯定存在于NSMenu.h中,正如我所说,它安装了我的菜单。它只是不安装菜单项。加上缺少完成使我认为我的appMainMenu没有被识别为NSMenu对象,即使它显然是有效的。
我遗失了哪些明显的东西?
答案 0 :(得分:0)
首先创建一个空的主菜单,然后将菜单项附加到它: -
// I am also entirely unsure about the difference between
// using AppKit directly vs the Cocoa framework
#import <cocoa/cocoa.h>
// create an empty main menu and set it as the apps main menu
[NSApp setMainMenu:[[NSMenu alloc] init]];
// The first (sub)menu of the app menu is always the app menu and is named automatically
NSMenu* appMenu = [[NSMenu alloc] initWithTitle:@""];
// Now, add an about entry
[appMenu addItemWithTitle:@"About MyApp" action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""];
这适合我。
答案 1 :(得分:0)
我正在创建一个对象:
NSMenu *appMainMenu = [[NSMenu alloc] initWithTitle:@"MyApp"];
您应该allocate it from [NSMenu menuZone]
。
(它与10.6.1中的默认区域相同,但只要文档说您应该使用[NSMenu menuZone]
,您可能应该使用[NSMenu menuZone]
。)
但是,当我尝试调用任何实例方法时,例如:
[appMainMenu addItemWithTitle:@"MyTitle" action:@selector(myaction:) keyEquivalent:@"t"];
XCode提供了一些完成,但似乎都没有来自NSMenu。
首先,它是Xcode,小写c。
尝试保存。有时Xcode没有意识到我创建了一个变量,直到我保存文件,从而激发它重建任何完成的来源。