objective ios uialertview swift

ios - objective - uialertcontroller swift 4



Cómo agregar una acción a un botón de UIAlertView usando Swift iOS (7)

Quiero agregar otro botón que no sea el botón "Aceptar", que simplemente debería descartar la alerta. Quiero que el otro botón llame a cierta función.

var logInErrorAlert: UIAlertView = UIAlertView() logInErrorAlert.title = "Ooops" logInErrorAlert.message = "Unable to log in." logInErrorAlert.addButtonWithTitle("Ok")

¿Cómo agrego otro botón a esta alerta y luego dejo que invoque una función una vez que hace clic, así que digamos que queremos que el nuevo botón llame?

retry()


La forma más rápida es usar el nuevo UIAlertController y los cierres:

// Create the alert controller let alertController = UIAlertController(title: "Title", message: "Message", preferredStyle: .Alert) // Create the actions let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default) { UIAlertAction in NSLog("OK Pressed") } let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel) { UIAlertAction in NSLog("Cancel Pressed") } // Add the actions alertController.addAction(okAction) alertController.addAction(cancelAction) // Present the controller self.presentViewController(alertController, animated: true, completion: nil)

Swift 3:

// Create the alert controller let alertController = UIAlertController(title: "Title", message: "Message", preferredStyle: .alert) // Create the actions let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default) { UIAlertAction in NSLog("OK Pressed") } let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.cancel) { UIAlertAction in NSLog("Cancel Pressed") } // Add the actions alertController.addAction(okAction) alertController.addAction(cancelAction) // Present the controller self.present(alertController, animated: true, completion: nil)


Ver mi código:

@IBAction func foundclicked(sender: AnyObject) { if (amountTF.text.isEmpty) { let alert = UIAlertView(title: "Oops! Empty Field", message: "Please enter the amount", delegate: nil, cancelButtonTitle: "OK") alert.show() } else { var alertController = UIAlertController(title: "Confirm Bid Amount", message: "Final Bid Amount : "+amountTF.text , preferredStyle: .Alert) var okAction = UIAlertAction(title: "Confirm", style: UIAlertActionStyle.Default) { UIAlertAction in JHProgressHUD.sharedHUD.loaderColor = UIColor.redColor() JHProgressHUD.sharedHUD.showInView(self.view, withHeader: "Amount registering" , andFooter: "Loading") } var cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel) { UIAlertAction in alertController .removeFromParentViewController() } alertController.addAction(okAction) alertController.addAction(cancelAction) self.presentViewController(alertController, animated: true, completion: nil) } }


Versión Swift 3.0 de la respuesta de Jake

// Crea el controlador de alerta

let alertController = UIAlertController(title: "Alert!", message: "There is no items for the current user", preferredStyle: .alert) // Create the actions let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default) { UIAlertAction in NSLog("OK Pressed") } let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.cancel) { UIAlertAction in NSLog("Cancel Pressed") } // Add the actions alertController.addAction(okAction) alertController.addAction(cancelAction) // Present the controller self.present(alertController, animated: true, completion: nil)


basado en veloz:

let alertCtr = UIAlertController(title:"Title", message:"Message", preferredStyle: .Alert) let Cancel = AlertAction(title:"remove", style: .Default, handler: {(UIAlertAction) -> Void in }) let Remove = UIAlertAction(title:"remove", style: .Destructive, handler:{(UIAlertAction)-> Void inself.colorLabel.hidden = true }) alertCtr.addAction(Cancel) alertCtr.addAction(Remove) self.presentViewController(alertCtr, animated:true, completion:nil)}


UIAlertViews utiliza un delegado para comunicarse con usted, el cliente.

Agrega un segundo botón y crea un objeto para recibir los mensajes de delegado de la vista:

class LogInErrorDelegate : UIAlertViewDelegate { init {} // not sure of the prototype of this, you should look it up func alertView(view :UIAlertView, clickedButtonAtIndex :Integer) -> Void { switch clickedButtonAtIndex { case 0: userClickedOK() // er something case 1: userClickedRetry() /* Don''t use "retry" as a function name, it''s a reserved word */ default: userClickedRetry() } } /* implement rest of the delegate */ } logInErrorAlert.addButtonWithTitle("Retry") var myErrorDelegate = LogInErrorDelegate() logInErrorAlert.delegate = myErrorDelegate


Swift 4 actualización

// Create the alert controller let alertController = UIAlertController(title: "Title", message: "Message", preferredStyle: .alert) // Create the actions let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default) { UIAlertAction in NSLog("OK Pressed") } let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.cancel) { UIAlertAction in NSLog("Cancel Pressed") } // Add the actions alertController.addAction(okAction) alertController.addAction(cancelAction) // Present the controller self.present(alertController, animated: true, completion: nil)


let alert = UIAlertController(title: "Alert", message: "My Alert for test", preferredStyle: UIAlertControllerStyle.alert) alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default, handler: {(action:UIAlertAction!) in print("you have pressed the ok button") })) alert.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.default, handler: nil)) self.present(alert, animated: true, completion: nil)