Создание 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]
.