2011-10-27 11 views
6

Estoy tratando de agregar un menú programáticamente a mi aplicación MonoMac. Abrí MainMenu.xib y eliminé todos NSMenuItem del control MainMenu.Crear NSMenuItems programáticamente en MonoMac

estoy añadiendo el siguiente código en mi anulación FinishedLaunching:

var fileMenuItem = new NSMenuItem("File"); 
var fileMenu = new NSMenu(); 

var fileNew = new NSMenuItem("New"); 
var fileOpen = new NSMenuItem("Open"); 
var fileSave = new NSMenuItem("Save"); 

fileMenu.AddItem(fileNew); 
fileMenu.AddItem(fileOpen); 
fileMenu.AddItem(fileSave); 

fileMenuItem.Menu = fileMenu; 

NSApplication.SharedApplication.MainMenu.AddItem(fileMenuItem); 

Pero no está haciendo nada.

Al agregar el código para MainWindowController.Initialize(), me sale un error de aserción "elemento a ser insertado en el menú ya está en otro menú"

me portar el código que se encuentra en este SO responder: Creating NSMenu with NSMenuItems in it, programmatically?

Respuesta

5

resulta que yo tenía que hacer lo siguiente:

fileMenuItem.Submenu = fileMenu; 

la propiedad submenú de la NSMenuItem debería haberse fijado al menú real en lugar de la propiedad de menú.

+0

Esto funciona, aunque también debe establecer el título de fileMenu.title = "Someting" si no es el primer elemento (que siempre tiene el nombre de la aplicación) – PetrV

Cuestiones relacionadas