用编程方式在NSMenuItems中创建NSMenu?

14 cocoa menu nsmenu nsmenuitem

首先,我想指出这个问题可能已经被问过了,我找不到任何答案.

所以,我是以编程方式尝试创建一个NSMenu和NSMenuItem到主栏,所以fe.NSMenu将是File,然后它将包含3x NSMenuItem,New,Open和Save.

但是没有什么工作,这就是我目前所拥有的:

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];
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*pan 29

设置菜单时,可以设置为该项目显示的菜单,而不是其父菜单.

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

[fileMenu addItem: newMenu];
[fileMenu addItem: openMenu];
[fileMenu addItem: saveMenu];
Run Code Online (Sandbox Code Playgroud)

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

NSMenuItem *fileMenuItem = [[NSMenuItem alloc] initWithTitle: @"File"];
[fileMenuItem setSubmenu: fileMenu]; // was setMenu:
[[NSApp mainMenu] addItem: fileMenuItem];
[fileMenuItem release];
Run Code Online (Sandbox Code Playgroud)

每个菜单都拥有多个菜单项; 单个菜单项可以负责子菜单; 并且所有这些菜单都锚定到UI [NSApp mainMenu].