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

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

Итак, я программно пытаюсь создать NSMenu и NSMenuItem на главной панели, так что напр. 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, но как мне это сделать, и если проблема не в этом, то в чем? Я новичок в этом деле, но мне интересно учиться, так что любой совет будет лучше, чем ничего!


person Community    schedule 15.07.2011    source источник


Ответы (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].

person Jonathan Grynspan    schedule 15.07.2011