J'ai mis en œuvre la fonctionnalité de suppression dans l'application de cacao maintenant je veux montrer une boîte de message lorsque l'utilisateur clique sur le bouton de suppression.Comment implémenter une boîte de message dans une application Cocoa?
18
A
Répondre
41
Jetez un oeil à NSAlert
, qui a une méthode -runModal
synchrone:
NSAlert *alert = [[[NSAlert alloc] init] autorelease];
[alert setMessageText:@"Hi there."];
[alert runModal];
Comme Peter mentionne une meilleure alternative est d'utiliser l'alerte as a modal sheet sur la fenêtre, par exemple:
[alert beginSheetModalForWindow:window
modalDelegate:self
didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:)
contextInfo:nil];
Les boutons peuvent être ajoutés via -addButtonWithTitle:
:
[a addButtonWithTitle:@"First"];
[a addButtonWithTitle:@"Second"];
Le code de retour indique quel bouton a été pressé:
- (void) alertDidEnd:(NSAlert *)a returnCode:(NSInteger)rc contextInfo:(void *)ci {
switch(rc) {
case NSAlertFirstButtonReturn:
// "First" pressed
break;
case NSAlertSecondButtonReturn:
// "Second" pressed
break;
// ...
}
}
6
Long temps est écoulé depuis la réponse acceptée et les choses ont changé:
- Swift devient de plus en plus populaire.
beginSheetModalForWindow(_:modalDelegate:didEndSelector:contextInfo:)
est déprécié, nous devrions utiliserbeginSheetModalForWindow:completionHandler:
à la place.
Dernier exemple de code à Swift:
func messageBox() {
let alert = NSAlert()
alert.messageText = "Do you want to save the changes you made in the document?"
alert.informativeText = "Your changes will be lost if you don't save them."
alert.addButtonWithTitle("Save")
alert.addButtonWithTitle("Cancel")
alert.addButtonWithTitle("Don't Save")
alert.beginSheetModalForWindow(window, completionHandler: savingHandler)
}
func savingHandler(response: NSModalResponse) {
switch(response) {
case NSAlertFirstButtonReturn:
println("Save")
case NSAlertSecondButtonReturn:
println("Cancel")
case NSAlertThirdButtonReturn:
println("Don't Save")
default:
break
}
}
Si vous voulez une version synchrone:
func messageBox() {
let alert = NSAlert()
alert.messageText = "Do you want to save the changes you made in the document?"
alert.informativeText = "Your changes will be lost if you don't save them."
alert.addButtonWithTitle("Save")
alert.addButtonWithTitle("Cancel")
alert.addButtonWithTitle("Don't Save")
let result = alert.runModal()
switch(result) {
case NSAlertFirstButtonReturn:
println("Save")
case NSAlertSecondButtonReturn:
println("Cancel")
case NSAlertThirdButtonReturn:
println("Don't Save")
default:
break
}
}
+0
Vous avez sauvé ma journée! – cmcromance
Questions connexes
- 1. Dans une application CLI Cocoa, comment implémenter une boucle d'événements?
- 2. Comment implémenter un message Balloon dans une application WPF
- 3. Détection d'une boîte de message ouverte dans une autre application
- 4. Comment implémenter MVP dans une application console?
- 5. Comment implémenter REST dans une application web?
- 6. Comment créer une boîte de dialogue dans une application iphone
- 7. Comment implémenter des conteneurs de tabulation dans une application Web?
- 8. Comment implémenter une application de rappel?
- 9. Attraper des événements de clavier dans une application Cocoa WebView
- 10. Comment implémenter une barre d'état dans une application ASP.NET?
- 11. Comment pourrais-je implémenter une signature numérique dans une application?
- 12. Accéder au contrôleur dans une application Cocoa
- 13. Comment afficher un message d'erreur dans une application Web ASP.NET
- 14. Comment implémenter une application Android "cachée"?
- 15. Comment associer une URL à une application utilisant Cocoa
- 16. Afficher une boîte de message d'une classe dans C#?
- 17. Implémenter le chat dans une application?
- 18. Comment désactiver les vues dans une application Cocoa?
- 19. Comment intercepter le trafic HTTP dans une application Cocoa?
- 20. Boîte de message dans ASP.NET
- 21. Comment détecter si une boîte de message est visible?
- 22. Comment puis-je retrouver une erreur de segmentation dans une application Cocoa?
- 23. Comment supprimer la "tête de boîte" dans une application Facebook?
- 24. Comment implémenter correctement une boîte de dialogue modale en haut d'une boîte de dialogue non modale?
- 25. Comment implémenter drag'n'drop application dans Android
- 26. Comment implémenter undo/redo dans une application MVVM?
- 27. Comment implémenter des profils dans une application Android?
- 28. Comment implémenter plusieurs langues dans une application PHP?
- 29. Comment implémenter le "verrouillage pessimiste" dans une application asp.net?
Mieux encore, commencer l'alerte comme une feuille sur la fenêtre qui contient le bouton de suppression . De cette façon, l'utilisateur peut continuer à utiliser toutes les autres fenêtres de votre application. –
Wow son fonctionnement bien.Mais comment mettre plus de boutons dans cette alerte et comment obtenir les événements de boutons – mikede
@mik: En utilisant ['-addButtonWithTitle:'] (http://developer.apple.com/mac/library/ documentation/cacao/conceptuel/Dialog/Tasks/UsingAlerts.html). Il y a aussi un [special on alerts] (http://developer.apple.com/mac/library/documentation/cocoa/conceptual/Dialog/Tasks/UsingAlerts.html) dans les documents qui devraient vous aider. –