NSWindowController: LOADWINDOW ventana de cargas a partir de cacao, pero SHOWWINDOW: no hace nada

StackOverflow https://stackoverflow.com/questions/3539721

Pregunta

Tengo una subclase llamada NSWindowController _PreferencesWindowController con la siguiente aplicación -

@synthesize window;

- (id)init {

 self = [super initWithWindowNibName:@"PreferencesWindow"];
 if (!self) return nil;

 return self;
}

Y he intentado mostrar en la ventana _PreferencesWindowController utilizando el siguiente código -

_preferencesWindowController = [[_PreferencesWindowController alloc] init];
[_preferencesWindowController showWindow:nil];

No hace nada, y he comprobado _preferencesWindowController.window es nil desde el depurador.

Sin embargo, si I loadView llamada en _preferencesWindowController la ventana puede ser cargado y es visible; _preferencesWindowController.window ya no es nula de valor -

[_preferencesWindowController loadWindow];

Miré a la documentación de Apple en NSWindowController específicamente dice "nunca se debe invocar directamente loadWindow", en lugar showWindow: debe ser usado. Me pregunto lo que podría haber perdido que resultó en el comportamiento mencionado anteriormente he estado viendo.

¿Fue útil?

Solución

Aceptar que resuelve esto mirando el archivo de cabecera NSWindowController.

El problema está en mi archivo de cabecera para _PreferencesWindowController -

@interface _PreferencesWindowController : NSWindowController <NSToolbarDelegate> {

    NSWindow *window;

}

@property (assign) IBOutlet NSWindow *window;

@end

Al eliminar la declaración @property y el cambio de Ivar NSWindow *window a IBOutlet NSWindow *window, método showWindow: ahora trabaja sin ningún inconveniente.

La declaración de propiedad debe haber dado lugar a un comportamiento no definido en el método showWindow: en la implementación del NSWindowController.

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