Implementé la funcionalidad de eliminación en la aplicación Cocoa ahora quiero mostrar un cuadro de mensaje cuando el usuario hace clic en el botón Eliminar.¿Cómo implemento un cuadro de mensaje en una aplicación Cocoa?
18
A
Respuesta
41
Tome un vistazo a NSAlert
, que tiene una sincrónica -runModal
método:
NSAlert *alert = [[[NSAlert alloc] init] autorelease];
[alert setMessageText:@"Hi there."];
[alert runModal];
Como Pedro menciona, una mejor alternativa es utilizar la alerta as a modal sheet en la ventana, por ejemplo:
[alert beginSheetModalForWindow:window
modalDelegate:self
didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:)
contextInfo:nil];
Los botones se pueden agregar a través de -addButtonWithTitle:
:
[a addButtonWithTitle:@"First"];
[a addButtonWithTitle:@"Second"];
El código de retorno que indica qué botón se pulsa: ha pasado
- (void) alertDidEnd:(NSAlert *)a returnCode:(NSInteger)rc contextInfo:(void *)ci {
switch(rc) {
case NSAlertFirstButtonReturn:
// "First" pressed
break;
case NSAlertSecondButtonReturn:
// "Second" pressed
break;
// ...
}
}
6
tiempo largo ya que la respuesta aceptada y las cosas han cambiado:
- Swift se está volviendo más y más popular.
beginSheetModalForWindow(_:modalDelegate:didEndSelector:contextInfo:)
está en desuso, deberíamos usarbeginSheetModalForWindow:completionHandler:
en su lugar.
reciente ejemplo de código en 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
}
}
En caso de que quiera una versión sincrónica:
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
¡Me salvaste el día! – cmcromance
Cuestiones relacionadas
- 1. ¿Cómo implemento una lista personalizada en Cocoa?
- 2. ¿Cómo implemento una aplicación de escritorio Python?
- 3. aplicación GTK del cuadro de mensaje
- 4. ¿Cómo agregar un NSView a NSWindow en una aplicación Cocoa?
- 5. ¿Cómo implemento una aplicación ASP.NET MVC3?
- 6. Cómo mostrar un cuadro de mensaje de error en una aplicación web asp.net C#
- 7. Cómo incorporar WebSockets en una aplicación Cocoa
- 8. Mostrar un cuadro de mensaje de una clase en C#?
- 9. Cómo mostrar y administrar un cuadro de diálogo simple de aplicación-modal en Cocoa
- 10. ¿Cómo implemento OpenID en mi aplicación web?
- 11. ¿Cómo implemento UITapGestureRecognizer en mi aplicación?
- 12. Cuadro de mensaje en Python
- 13. ¿Cómo implemento el "bloqueo pesimista" en una aplicación asp.net?
- 14. Cómo agregar ayuda a una aplicación Cocoa
- 15. Cómo personalizar el cuadro de mensaje
- 16. cuadro de mensaje en jquery
- 17. Cuadro de mensaje personalizado
- 18. Delegado de aplicación - Cocoa
- 19. ¿Cómo implemento una aplicación para iPhone (sin App Store)?
- 20. Entrada de usuario en un cuadro de diálogo de mensaje
- 21. Fuente personalizada en una aplicación Cocoa
- 22. ¿Cómo ocultar automáticamente el cuadro de mensaje?
- 23. ¿Cómo implemento/publico una aplicación web con CruiseControl.NET y MSBuild?
- 24. Cómo mostrar el cuadro de mensaje de error y advertencia en .NET/Cómo personalizar el cuadro de mensaje
- 25. ¿Cómo incluir OpenCV en la aplicación Cocoa?
- 26. ¿Cómo crear un cuadro de mensaje con tkinter?
- 27. Teclas Esc e Intro en el cuadro de diálogo Cocoa
- 28. ¿Cómo cambio las Vistas en una aplicación Cocoa?
- 29. ¿Cómo crear una aplicación Cocoa en segundo plano?
- 30. ¿Cómo usar el cuadro de mensaje en el controlador MVC?
Aún mejor, comience la alerta como una hoja en la ventana que contiene el botón de borrar . De esta forma, el usuario puede continuar usando cualquier otra ventana en su aplicación. –
Wow funciona bien. Pero cómo poner más botones en esta alerta y cómo obtener esos botones eventos – mikede
@mik: Al usar ['-addButtonWithTitle:'] (http://developer.apple.com/mac/library/ documentation/cocoa/conceptual/Dialog/Tasks/UsingAlerts.html). También hay un [especial sobre alertas] (http://developer.apple.com/mac/library/documentation/cocoa/conceptual/Dialog/Tasks/UsingAlerts.html) en los documentos que deberían ayudarlo. –