xcode dialog swift alert confirmation

xcode - Swift alert view(iOS8) con el botón OK y cancelar, qué botón tocó



uialertcontroller swift 4 (4)

Tengo una vista de alerta en Xcode escrita en Swift y me gustaría determinar qué botón seleccionó el usuario (es un diálogo de confirmación) para no hacer nada o para ejecutar algo. Actualmente tengo:

@IBAction func pushedRefresh(sender: AnyObject) { var refreshAlert = UIAlertView() refreshAlert.title = "Refresh?" refreshAlert.message = "All data will be lost." refreshAlert.addButtonWithTitle("Cancel") refreshAlert.addButtonWithTitle("OK") refreshAlert.show() }

Probablemente estoy usando los botones incorrectamente, por favor corrígeme ya que esto es nuevo para mí.

¡Gracias!


Actualizado para swift 3:

// definación de la función:

@IBAction func showAlertDialog(_ sender: UIButton) { // Declare Alert let dialogMessage = UIAlertController(title: "Confirm", message: "Are you sure you want to Logout?", preferredStyle: .alert) // Create OK button with action handler let ok = UIAlertAction(title: "OK", style: .default, handler: { (action) -> Void in print("Ok button click...") self.logoutFun() }) // Create Cancel button with action handlder let cancel = UIAlertAction(title: "Cancel", style: .cancel) { (action) -> Void in print("Cancel button click...") } //Add OK and Cancel button to dialog message dialogMessage.addAction(ok) dialogMessage.addAction(cancel) // Present dialog message to user self.present(dialogMessage, animated: true, completion: nil) }

// función de desconexión logoutFun ():

func logoutFun() { print("Logout Successfully...!") }


Puedes hacerlo fácilmente usando UIAlertController

let alertController = UIAlertController( title: "Your title", message: "Your message", preferredStyle: .alert) let defaultAction = UIAlertAction( title: "Close Alert", style: .default, handler: nil) //you can add custom actions as well alertController.addAction(defaultAction) present(alertController, animated: true, completion: nil)

.

Referencia: iOS Show Alert


Si está utilizando iOS8, debe usar UIAlertController: UIAlertView está en deprecated .

Aquí hay un ejemplo de cómo usarlo:

var refreshAlert = UIAlertController(title: "Refresh", message: "All data will be lost.", preferredStyle: UIAlertControllerStyle.Alert) refreshAlert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { (action: UIAlertAction!) in print("Handle Ok logic here") })) refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: { (action: UIAlertAction!) in print("Handle Cancel Logic here") })) presentViewController(refreshAlert, animated: true, completion: nil)

Como puede ver, los controladores de bloque para el manejo de UIAlertAction presionan el botón. Un gran tutorial está aquí (aunque este tutorial no está escrito usando swift): http://hayageek.com/uialertcontroller-example-ios/

Actualización de Swift 3:

let refreshAlert = UIAlertController(title: "Refresh", message: "All data will be lost.", preferredStyle: UIAlertControllerStyle.alert) refreshAlert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action: UIAlertAction!) in print("Handle Ok logic here") })) refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { (action: UIAlertAction!) in print("Handle Cancel Logic here") })) present(refreshAlert, animated: true, completion: nil)


var refreshAlert = UIAlertController(title: "Log Out", message: "Are You Sure to Log Out ? ", preferredStyle: UIAlertControllerStyle.Alert) refreshAlert.addAction(UIAlertAction(title: "Confirm", style: .Default, handler: { (action: UIAlertAction!) in self.navigationController?.popToRootViewControllerAnimated(true) })) refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .Default, handler: { (action: UIAlertAction!) in refreshAlert .dismissViewControllerAnimated(true, completion: nil) })) presentViewController(refreshAlert, animated: true, completion: nil)