Creé una nueva aplicación estándar en blanco usando la plantilla de Xcode. Se eliminó la ventana en MainMenu.xib y creé una nueva subclase NSWindowController personalizada con un xib.¿Cómo se usa NSWindowController para mostrar una ventana en la aplicación estándar?
Se denominaron "WYSunFlowerWindowController.h" y "WYSunFlowerWindowController.m".
Y a continuación, añadir la función init, como a continuación:
- (id)init
{
NSLog(@"init()");
return [super initWithWindowNibName:@"WYSunFlowerWindowController" owner:self];
}
Y mi archivo WYAppDelegate.m es como a continuación:
static WYSunFlowerMainWindowController* windowController = nil;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Insert code here to initialize your application
if (windowController == nil) {
windowController = [[WYSunFlowerMainWindowController alloc] init];
}
[[windowController window] makeKeyAndOrderFront:windowController];
}
y tengo el problema, que la ventana no se puede mostrar yo mismo después de que inicie la aplicación. ¿Alguien puede decirme por qué? ¿Hay algún problema con mi código?
Soy un novato en Objective-C y cocoa. Así que creo que tal vez cometer un error tonto que no puedo resolver por mi cuenta.
ACTUALIZACIÓN:
Aquí es mi fuente del proyecto. Peticiones tienen un aspecto y me ayudan a averiguar qué es mi error.
https://dl.dropbox.com/u/3193707/SunFlower.zip
¿Tiene ARC habilitado? Descubrí que con ARC, el controlador de ventana se desasigna a menos que lo haga una propiedad del delegado de la aplicación (estoy seguro de que hay otras formas de hacerlo). – sosborn
Estoy usando ARC. Hago windowController como un campo estático de la clase AppDelegate. Creo que no se desasignará hasta que se finalice la aplicación. – morphinewan