2016-06-29 5 views
0

Я пишу приложение Mac с минимальным использованием IB - см. programatically create initial window of cocoa app (OS X).программно создан NSMenu показывает только первый элемент

Вот мой код (через Xamarin/C#):

public override void DidFinishLaunching(NSNotification notification) { 
     // create and show a window, then . . . 
     NSMenu fileMenu = new NSMenu(); 
     NSMenu appMenu = new NSMenu(); 

     // add some items to both menus, then . . . 

     NSMenuItem file = new NSMenuItem("file"); 
     file.Submenu = fileMenu; 

     NSMenuItem app = new NSMenuItem("app"); 
     app.Submenu = appMenu; 

     NSMenu topLevelMenu = new NSMenu(); 
     topLevelMenu.AddItem(app); // these two lines in 
     topLevelMenu.AddItem(file); // either order 

     NSApplication.SharedApplication.Menu = topLevelMenu; // incidentally, setting the MainMenu doesn't appear to do anything 
    } 
    } 

Странным является то, что только первый пункт меню добавляю показывает вверх, и его название изменено на имя моего приложения. Таким образом, для вышеприведенного кода я видел бы только меню приложения, с названием MyAppName, но с правильными элементами. Если бы я сначала добавил файл NSMenuItem, я бы увидел это меню, снова с его именем, измененным на мое имя приложения, и меню просмотра вообще не появилось.

Я не против измененного названия; Я полагаю, что Apple хочет всегда показывать имя активного приложения. Но мне кажется, что я не могу получить дополнительные меню.

Как я могу отобразить все мои меню в верхней части экрана?

+1

'fileMenu' и' appMenu' отсутствуют заголовок. – Willeke

ответ

0

мне просто нужно добавить заголовки к своим меню:

fileMenu.Title = "file"; 
appMenu.Title = "whatever"; 

Название первого по-прежнему меняется на название приложения.

 Смежные вопросы

  • Нет связанных вопросов^_^