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 に答える