Detener modal cuando la ventana está cerrada(Cocoa)
modal-dialog nswindow (3)
Actualmente estoy mostrando una ventana modal usando este código:
[[NSApplication sharedApplication] runModalForWindow:mainWindow];
Sin embargo, cuando cierro esta ventana, las otras ventanas todavía están inactivas. ¿Cómo ejecuto el método stopModal
cuando la ventana se cierra usando la "x roja"?
Gracias,
Miguel
Si tiene un diálogo que se aplica a una ventana específica, entonces probablemente no debería usar un diálogo modal sino una hoja. Los diálogos modales deben evitarse si es posible. Si usa una hoja, el problema que está experimentando ya no será un problema.
- (void)showSheet:(id)sender
{
[NSApp beginSheet:yourModalWindow
modalForWindow:windowThatSheetIsAttachedTo
modalDelegate:self
didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:)
contextInfo:nil];
}
- (void)sheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo
{
[sheet orderOut:self];
[NSApp endSheet:sheet];
}
Puede crear un delegado para la ventana y hacer que responda ya sea al
- (nulo) windowWillClose: notificación (NSNotification *) o el
- (void) windowShouldClose: (NSNotification *) métodos de notificación como estos:
- (void)windowWillClose:(NSNotification *)notification {
[[NSApplication sharedApplication] stopModal];
}
Consulte Mac Dev Center: Referencia del protocolo NSWindowDelegate
Junto con la respuesta de Randall puede vincular la clase del controlador como el delegado para la ventana definida en su archivo .xib.
Puedes manejar el
[[NSApplication sharedApplication] stopModal];
en cualquiera
-(void)performClose:(id)sender
-(void)windowWillClose:(NSNotification *)notification
métodos.