Создание NSMenu с NSMenuItems в нем программно?

Во-первых, я хотел бы указать, что этот вопрос, вероятно, уже задан, я просто не мог найти ответы на них.

Итак, я программно пытаюсь создать 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];

Но ничего не происходит, я уверен, что должен сказать, что приложение должно использовать fileMenu, но как это сделать, и если это не проблема, то что это такое? Я новичок в этом, но интересуюсь обучением, поэтому любой совет будет лучше, чем ничего!

Ответы

Ответ 1

Когда вы устанавливаете меню, вы устанавливаете меню, которое отображается для этого элемента, а не его родительское меню.

Чтобы добавить эти три элемента в свое меню, используйте:

[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].