Pregunta

Estoy creando un objeto con:

NSMenu *appMainMenu = [[NSMenu alloc] initWithTitle:@"MyApp"];

(ignorar el hecho de que estoy creando este menú mediante programación y no usar un archivo de la plumilla. Entiendo las desventajas de hacerlo)

Aparece el menú correctamente en la barra de menú.

Sin embargo, cuando intento para llamar a cualquier método de instancia, tales como:

 [appMainMenu addItemWithTitle:@"MyTitle" action:@selector(myaction:) keyEquivalent:@"t"];

XCode ofrecen algunas terminaciones, pero ninguno parece provenir de NSMenu.
He intentado tanto

#import <AppKit/AppKit.h> and #import <AppKit/NSMenu.h>

Los métodos de instancia son ciertamente allí en NSMenu.h, y como he dicho, se instala mi menú. Simplemente no se instala el elemento de menú. Que además de la falta de terminaciones me hace pensar que mi appMainMenu no está siendo reconocido como un objeto NSMenu, aunque obviamente es válido.

¿Qué cosa obvia que me estoy perdiendo?

¿Fue útil?

Solución

  

Estoy creando un objeto con:

NSMenu *appMainMenu = [[NSMenu alloc] initWithTitle:@"MyApp"];

debe asignar desde [NSMenu menuZone]

.

(Es la misma zona que el defecto como de 10.6.1, pero siempre y cuando la documentación dice que se debe utilizar [NSMenu menuZone], que es mejor usar [NSMenu menuZone].)

  

Sin embargo, cuando intento para llamar a cualquier método de instancia, tales como:

[appMainMenu addItemWithTitle:@"MyTitle" action:@selector(myaction:) keyEquivalent:@"t"];
     

XCode ofrecen algunas terminaciones, pero ninguno parece provenir de NSMenu.

En primer lugar, es Xcode, con una c minúscula.

Trate de guardar. A veces Xcode no se da cuenta que he creado una variable hasta que guardar el archivo, provocando con ello que reconstruir cualesquiera que sean las terminaciones están viniendo.

Otros consejos

Para comenzar, cree un menú principal vacía, entonces la fijación de los elementos de menú a la misma: -

// I am also entirely unsure about the difference between
// using AppKit directly vs the Cocoa framework
#import <cocoa/cocoa.h>

// create an empty main menu and set it as the apps main menu
[NSApp setMainMenu:[[NSMenu alloc] init]];
// The first (sub)menu of the app menu is always the app menu and is named automatically
NSMenu* appMenu = [[NSMenu alloc] initWithTitle:@""];
// Now, add an about entry
[appMenu addItemWithTitle:@"About MyApp" action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""];

Esto funciona para mí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top