0

我正在创建一个对象:

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 对象,即使它显然是有效的。

我错过了什么明显的东西?

4

2 回答 2

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:@""];

这对我有用。

于 2010-02-04T09:39:28.950 回答
0

我正在创建一个对象:

NSMenu *appMainMenu = [[NSMenu alloc] initWithTitle:@"MyApp"];

你应该 [NSMenu menuZone].

(它与 10.6.1 的默认区域相同,但只要文档说您应该使用[NSMenu menuZone],您可能应该使用[NSMenu menuZone]。)

但是,当我尝试调用任何实例方法时,例如:

[appMainMenu addItemWithTitle:@"MyTitle" action:@selector(myaction:) keyEquivalent:@"t"];

XCode 提供了一些补全,但似乎没有一个来自 NSMenu。

首先,它是 Xcode,带有小写的 c。

尝试保存。有时 Xcode 直到我保存文件才意识到我已经创建了一个变量,从而促使它重新构建完成来自的任何内容。

于 2010-02-04T12:29:37.887 回答