Как я могу получить меню приложений в какао - PullRequest
12 голосов
/ 09 августа 2010

Как я могу получить NSMenu или NSMenuItem для меню приложения (тот, что в строке меню рядом с яблочным меню). Кажется, он создается автоматически и не зависит от NSMenu, который я установил через NSApplication setMainMenu.

Кстати: я создаю свое полное приложение без XCode, поэтому, пожалуйста, никаких советов InterfaceBuilder.

PS: MacOSX 10,5

Ответы [ 4 ]

18 голосов
/ 09 августа 2010

Без IB вы можете получить доступ к меню с помощью главного меню NSApplication:

NSMenu *mainMenu = [[NSApplication sharedApplication] mainMenu];
NSMenu *appMenu = [[mainMenu itemAtIndex:0] submenu];

for (NSMenuItem *item in [appMenu itemArray]) {
    NSLog(@"%@", [item title]);
}
12 голосов
/ 07 ноября 2015

Хотя это вопрос 5 лет ... Мне нравится делиться тем, как это сделать.

По моему опыту в OS X 10.11 (El Capitan) с Xcode 7.1, нетрудно воспроизвести это приложениеменю.Кажется, Apple сняла все странные ограничения.

Примечание. Этот код обновлен для Swift 3 и протестирован только в macOS Sierra (10.12.1).не генерируется автоматически, и мне пришлось настроить их все самостоятельно.Я не уверен, есть ли другой способ сделать это или нет.

Вы можете скачать рабочий пример здесь .

2 голосов
/ 15 мая 2019

мои два цента за Swift 5.0

private final func manageMenus(){
    let  mainMenu =  NSApplication.shared.mainMenu

    if let editMenu = mainMenu?.item(at: 1)?.submenu{
        for item in editMenu.items{
            print(item.title)
        }
    }
}

так что вы также можете включить его:

....

  for item in editMenu.items{
       item.isEnabled = true
   }
1 голос
/ 09 августа 2010

Создание приложения Cocoa без Xcode или IB звучит для меня мазохистски, но для каждого свое ... Попробуйте это: [[[NSApp mainMenu] itemAtIndex: 0] submenu].

...