Создание NSMenu с NSMenuItems в нем, программно? - PullRequest
14 голосов
/ 15 июля 2011

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

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

1 Ответ

29 голосов
/ 15 июля 2011

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

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

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

...