swift cocoa nsalert

Crear una NSAlert con Swift



cocoa (3)

Actualizada la respuesta de José Hidalgo para Swift 4:

let a: NSAlert = NSAlert() a.messageText = "Delete the document?" a.informativeText = "Are you sure you would like to delete the document?" a.addButton(withTitle: "Delete") a.addButton(withTitle: "Cancel") a.alertStyle = NSAlert.Style.warning a.beginSheetModal(for: self.window!, completionHandler: { (modalResponse: NSApplication.ModalResponse) -> Void in if(modalResponse == NSApplication.ModalResponse.alertFirstButtonReturn){ print("Document deleted") } })

Tengo el código para crear y NSAlert en Objective-C, pero ahora me gustaría crearlo en Swift.

La alerta es para confirmar que el usuario desea eliminar un documento.

Me gustaría que el botón "eliminar" ejecute la función de eliminación y el botón "cancelar" solo para descartar la alerta.

¿Cómo puedo escribir esto en Swift?

NSAlert *alert = [[[NSAlert alloc] init] autorelease]; [alert addButtonWithTitle:@"Delete"]; [alert addButtonWithTitle:@"Cancel"]; [alert setMessageText:@"Delete the document?"]; [alert setInformativeText:@"Are you sure you would like to delete the document?"]; [alert setAlertStyle:NSWarningAlertStyle]; [alert beginSheetModalForWindow:[self window] modalDelegate:self didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:) contextInfo:nil];


Creo que esto puede funcionar para ti ...

let a = NSAlert() a.messageText = "Delete the document?" a.informativeText = "Are you sure you would like to delete the document?" a.addButtonWithTitle("Delete") a.addButtonWithTitle("Cancel") a.alertStyle = NSAlertStyle.WarningAlertStyle a.beginSheetModalForWindow(self.view.window!, completionHandler: { (modalResponse) -> Void in if modalResponse == NSAlertFirstButtonReturn { print("Document deleted") } })


beginSheetModalForWindow:modalDelegate está en desuso en OS X 10.10 Yosemite.

Swift 2

func dialogOKCancel(question: String, text: String) -> Bool { let alert: NSAlert = NSAlert() alert.messageText = question alert.informativeText = text alert.alertStyle = NSAlertStyle.WarningAlertStyle alert.addButtonWithTitle("OK") alert.addButtonWithTitle("Cancel") let res = alert.runModal() if res == NSAlertFirstButtonReturn { return true } return false } let answer = dialogOKCancel("Ok?", text: "Choose your answer.")

Esto devuelve true o false según la elección del usuario.

NSAlertFirstButtonReturn representa el primer botón agregado al diálogo, aquí el "OK".

Swift 3

func dialogOKCancel(question: String, text: String) -> Bool { let alert = NSAlert() alert.messageText = question alert.informativeText = text alert.alertStyle = NSAlertStyle.warning alert.addButton(withTitle: "OK") alert.addButton(withTitle: "Cancel") return alert.runModal() == NSAlertFirstButtonReturn } let answer = dialogOKCancel(question: "Ok?", text: "Choose your answer.")

Swift 4

Ahora usamos enumeraciones para el estilo de la alerta y la selección del botón.

func dialogOKCancel(question: String, text: String) -> Bool { let alert = NSAlert() alert.messageText = question alert.informativeText = text alert.alertStyle = .warning alert.addButton(withTitle: "OK") alert.addButton(withTitle: "Cancel") return alert.runModal() == .alertFirstButtonReturn } let answer = dialogOKCancel(question: "Ok?", text: "Choose your answer.")