Llamar a un NSAlert de didEndSelector de otro NSAlert
-
20-09-2019 - |
Pregunta
necesito para abrir una NSAlert en base a la respuesta de otro NSAlert. Sin embargo, cuando intento llamarlo desde el didEndSelector del primero, todo tipo de cosas desagradables suceden (como mi desaparición ventana del documento y las advertencias sobre el pedido de problemas de impresión a la consola).
¿Alguna idea?
Solución
Lo que estamos tratando de hacer es "cadena" de las alertas.
Para ello es necesario llamar a orderOut:
en la ventana de alerta.
Aquí está la documentación:
Si desea borrar la hoja de dentro del método alertDidEndSelector antes de que el delegado modal lleva a cabo una acción en respuesta a la devolución valor, enviar orderOut: (NSWindow) a al objeto de ventana obtenido mediante el envío ventana para el argumento de alerta. Esta que permite a las hojas de cadena, por ejemplo, desestimando una hoja antes de mostrar el lado de dentro el método alertDidEndSelector. Nota que se debe tener cuidado de no llamar orderOut: en la hoja de otra parte en su programa antes de la se invoca el método alertDidEndSelector.
Otros consejos
Hay una manera más fácil, sólo tiene que comprobar el contenido de [runModal]
en una sentencia if:
//setup the dialog
NSAlert *networkErrorDialog = [NSAlert alertWithMessageText:@"Couldn't connect to the server" defaultButton:@"Network Diagnostics" alternateButton:@"Quit" otherButton:nil informativeTextWithFormat:@"Check that your computer is connected to the internet and make sure you aren't using a proxy server or parental controls"];
//show the dialog inside an IF, 0=the first button 1=the 2nd button etc
if ([networkErrorDialog runModal]==0) {
//quit
[[NSApplication sharedApplication] terminate:self];
} else {
//Network Diagnostics
[[NSWorkspace sharedWorkspace] launchApplication:@"Network Diagnostics"];
[[NSApplication sharedApplication] terminate:self];
}
Espero que ayude