15

首先,我想指出这个问题可能已经被问过了,我只是无法从他们那里找到任何答案。

所以,我正在以编程方式尝试创建一个 NSMenu 和 NSMenuItem 到主栏,所以 fe。NSMenu 将是 File,然后它会有 3x NSMenuItem,新建、打开和保存。

但是没有任何效果,这就是我目前所拥有的:

NSMenu *fileMenu = [[NSMenu alloc] initWithTitle:@"File"];
NSMenuItem *newMenu = [[NSMenuItem alloc] initWithTitle:@"New" action:NULL keyEquivalent:@""];
NSMenuItem *openMenu = [[NSMenuItem alloc] initWithTitle:@"Open" action:NULL keyEquivalent:@""];
NSMenuItem *saveMenu = [[NSMenuItem alloc] initWithTitle:@"Save" action:NULL keyEquivalent:@""];
[newMenu setMenu:fileMenu];
[openMenu setMenu:fileMenu];
[saveMenu setMenu:fileMenu];

但是什么都没有发生,我很确定我必须告诉应用程序它应该使用 fileMenu,但是我该怎么做,如果这不是问题,那是什么?我对这些东西很陌生,但对学习很感兴趣,所以任何提示都比没有好!

4

1 回答 1

30

设置菜单时,您设置的是为该项目显示的菜单,而不是其父菜单。

要将这三个项目添加到菜单中,请使用:

[fileMenu addItem: newMenu];
[fileMenu addItem: openMenu];
[fileMenu addItem: saveMenu];

然后将菜单添加到菜单栏:

NSMenuItem *fileMenuItem = [[NSMenuItem alloc] initWithTitle: @"File"];
[fileMenuItem setSubmenu: fileMenu]; // was setMenu:
[[NSApp mainMenu] addItem: fileMenuItem];
[fileMenuItem release];

每个菜单拥有多个菜单项;一个菜单项可以负责一个子菜单;所有这些菜单都通过[NSApp mainMenu].

于 2011-07-15T12:23:54.273 回答