Pregunta

Mi aplicación está basada en documentos, pero el “documento” se compone de dos carpetas, no un archivo. ventana inicial del documento contiene un par de selectores de archivos y un botón; la acción se cierra esa ventana y se abre una nueva muestra los resultados de la operación entre las dos jerarquías de carpetas. (Las dos ventanas son significativamente diferentes en tamaño, manteniendo ambos puntos de vista en un TabView tabless y conmutación con que sería no trivial.)

Este es el código de mi método de acción que se cierra la ventana de archivos recolectores y se abre la ventana de resultados:

[self retain];
NSArray *existingWindowControllers = [[[self windowControllers] copy] autorelease];
for (NSWindowController *windowController in existingWindowControllers) {
    [windowController setShouldCloseDocument:NO];
    [windowController close];
    [self removeWindowController:windowController];
}
[self addWindowController:[[[NSWindowController alloc] initWithWindowNibName:@"ProjectFoldersDocument" owner:self] autorelease]];
[self showWindows];
[self release];

(He añadido los mensajes de retener y liberar en un intento fallido de resolver el problema.)

Mi problema es que el documento se libera y se cancela la asignación después de este método de acción termina, a pesar de mi diciendo al controlador de ventana inicial no para cerrar el documento. (Ese fue otro intento de resolver el problema ha fallado.)

Así que, ¿cómo puedo reemplazar a la primera ventana con otro, para el mismo documento, sin el documento muriendo?

¿Fue útil?

Solución

I finalmente resuelto este por la conmutación de los mensajes removeWindowController: y close:

[self removeWindowController:windowController];
[windowController close];

Esto sugeriría que el controlador de ventana de cierre de su documento en una estrecha. No sé por qué, porque me dijeron que no en la línea inmediatamente-anterior.

También se han quitado los mensajes retain y release explícitos. El problema no regresó.

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