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?

¿Fue útil?

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

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