Problemas para get text del campo de text UIAlertView

En mi aplicación quiero una alerta con un campo de text. Después de hacer clic en "Listo", quiero save la input del campo de text en una cadena. Después de hacer clic en "Cancelar", solo quiero cerrar la alerta. He creado mi alerta de esta manera:

var alert = UIAlertView() alert.title = "Enter Input" alert.addButtonWithTitle("Done") alert.alertViewStyle = UIAlertViewStyle.PlainTextInput alert.addButtonWithTitle("Cancel") alert.show() let textField = alert.textFieldAtIndex(0) textField!.placeholder = "Enter an Item" println(textField!.text) 

La alerta se ve así:

Mi alerta

Quiero saber cómo get el text del campo de text y cómo crear events para el button "Listo" y el button "Cancelar".

Puede ir con UIAlertController en lugar de UIAlertView.

Ya implementé y probé usando UIAlertController para lo que realmente quieres. Pruebe el siguiente código

  var tField: UITextField! func configurationTextField(textField: UITextField!) { print("generating the TextField") textField.placeholder = "Enter an item" tField = textField } func handleCancel(alertView: UIAlertAction!) { print("Cancelled !!") } var alert = UIAlertController(title: "Enter Input", message: "", prefernetworkingStyle: .Alert) alert.addTextFieldWithConfigurationHandler(configurationTextField) alert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler:handleCancel)) alert.addAction(UIAlertAction(title: "Done", style: .Default, handler:{ (UIAlertAction) in print("Done !!") print("Item : \(self.tField.text)") })) self.presentViewController(alert, animated: true, completion: { print("completion block") }) 

Tendrá que implementar el UIAlertViewDelegate

 optional func alertView(_ alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int) 

Para SWIFT 3

 @IBAction func ForgotPassword(_ sender: Any) { let alertController = UIAlertController(title: "Email?", message: "Please input your email:", prefernetworkingStyle: .alert) let confirmAction = UIAlertAction(title: "Confirm", style: .default) { (_) in if let field = alertController.textFields![0] as? UITextField { // store and use entenetworking data } else { print("please enter email id") } } let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (_) in } alertController.addTextField { (textField) in textField.placeholder = "Email" } alertController.addAction(confirmAction) alertController.addAction(cancelAction) self.present(alertController, animated: true, completion: nil) } 

Espero que ayude a alguien más 🙂

Para iOS 8+, debe usar UIAlertController en lugar de UIAlertView. Para admitir iOS 7, debe implementar (UIAlertViewDelegate):

 func alertView(alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int) { //... let textField = alertView.textFieldAtIndex(0) }