2009-10-10 5 views
2

J'ai besoin d'appeler NSAlert en fonction de la réponse d'un autre NSAlert. Cependant, quand j'essaye de l'appeler du didEndSelector du premier, toutes sortes de choses désagréables se produisent (comme ma fenêtre de document disparaissant et les avertissements au sujet de commander des problèmes imprimant à la console).Appel d'une NSAlert à partir de didEndSelector d'un autre NSAlert

Des pensées?

Répondre

5

Ce que vous essayez de faire est de "chaîner" les alertes.

Pour ce faire, vous devez appeler orderOut: sur la fenêtre d'alerte.

est ici la documentation:

Si vous voulez rejeter la feuille de dans la méthode de alertDidEndSelector avant le délégué modal effectue une action en réponse à la valeur de retour , envoyer orderOut: (NSWindow) à l'objet fenêtre obtenu en envoyant une fenêtre à l'argument d'alerte. Ce vous permet de chaîner des feuilles, par exemple pour , en ignorant une feuille avant d'afficher la suivante à partir de la méthode alertDidEndSelector. Notez que vous devez prendre soin de ne pas appeler orderOut: sur la feuille d'ailleurs dans votre programme avant l'appel de la méthode alertDidEndSelector.

4

Il est un moyen plus facile, vérifiez simplement le contenu de [runModal] dans une instruction 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]; 
       } 

espoir qui aide

Questions connexes