Obtenga el valor de entrada de TextField en la alerta de iOS en Swift
121
Estoy tratando de crear un mensaje de alerta con entrada y luego obtener el valor de la entrada. Encontré muchos buenos tutoriales sobre cómo hacer el campo de entrada de texto. pero no puedo obtener el valor de la alerta.
//1. Create the alert controller.let alert =UIAlertController(title:"Some Title", message:"Enter a text", preferredStyle:.alert)//2. Add the text field. You can configure it however you need.alert.addTextField {(textField)in
textField.text ="Some default text"}// 3. Grab the value from the text field, and print it when the user clicks OK.alert.addAction(UIAlertAction(title:"OK", style:.default, handler:{[weak alert](_)inlet textField = alert.textFields![0]// Force unwrapping because we know it exists. print("Text field: \(textField.text)")}))// 4. Present the alert.self.present(alert, animated:true, completion:nil)
Swift 2.x
Suponiendo que desea una alerta de acción en iOS:
//1. Create the alert controller. var alert =UIAlertController(title:"Some Title", message:"Enter a text", preferredStyle:.Alert)//2. Add the text field. You can configure it however you need.alert.addTextFieldWithConfigurationHandler({(textField)->Voidin
textField.text ="Some default text."})//3. Grab the value from the text field, and print it when the user clicks OK. alert.addAction(UIAlertAction(title:"OK", style:.Default, handler:{[weak alert](action)->Voidinlet textField = alert.textFields![0]asUITextField
println("Text field: \(textField.text)")}))// 4. Present the alert.self.presentViewController(alert, animated:true, completion:nil)
No es un problema. Recuerde marcar esto como Aceptado si le ayudó. ¡Gracias!
Andy Ibanez
Hola @AndyIbanez Estoy tratando de implementar su código en mi aplicación, sin embargo, se indica el error "Uso de var de identificador no declarado" Soy nuevo en Xcode, así que disculpas si se trata de un error básico en mi nombre
Sjharrison
@Sjharrison Mi código es para Swift. La única razón por la que puedo pensar que le causaría problemas con la varpalabra clave es si estuviera escribiendo en Objective-C.
Andy Ibanez
1
¿Alguien puede explicar por qué [weak alert]? Estoy mirando a Swift 3.
Andrej
3
Para la alerta Swift 3 en el paso 3. es opcional, se necesita "?" let textField = alert?.textFields![0] // Force unwrapping because we know it exists.print("Text field: \(textField?.text)")
James
27
Rápido 3/4
Puede usar la siguiente extensión para su conveniencia.
Uso dentro de un ViewController:
showInputDialog(title:"Add number",
subtitle:"Please enter the new number below.",
actionTitle:"Add",
cancelTitle:"Cancel",
inputPlaceholder:"New number",
inputKeyboardType:.numberPad){(input:String?)in
print("The new number is \(input ?? "")")}
solo tenga en cuenta que si va a presentar la acción "Agregar" asegúrese de que el estilo sea "predeterminado" no "destructivo" - alert.addAction (UIAlertAction (title: actionTitle, style: .default ...
Bishal Ghimire
13
En Swift5 y Xcode 10
Agregue dos campos de texto con las acciones Guardar y Cancelar y lea datos de texto de TextFields
func alertWithTF(){//Step : 1
let alert =UIAlertController(title:"Great Title", message:"Please input something", preferredStyle:UIAlertController.Style.alert )//Step : 2
let save =UIAlertAction(title:"Save", style:.default){(alertAction)inlet textField = alert.textFields![0]asUITextFieldlet textField2= alert.textFields![1]asUITextFieldif textField.text !=""{//Read TextFields text data
print(textField.text!)
print("TF 1 : \(textField.text!)")}else{
print("TF 1 is Empty...")}if textField2.text !=""{
print(textField2.text!)
print("TF 2 : \(textField2.text!)")}else{
print("TF 2 is Empty...")}}//Step : 3
//For first TF
alert.addTextField {(textField)in
textField.placeholder ="Enter your first name"
textField.textColor =.red
}//For second TF
alert.addTextField {(textField)in
textField.placeholder ="Enter your last name"
textField.textColor =.blue
}//Step : 4
alert.addAction(save)//Cancel action
let cancel =UIAlertAction(title:"Cancel", style:.default){(alertAction)in}
alert.addAction(cancel)//OR single line action
//alert.addAction(UIAlertAction(title: "Cancel", style: .default) { (alertAction) in })
self.present(alert, animated:true, completion:nil)}
Respuestas:
Actualizado para Swift 3 y superior:
Swift 2.x
Suponiendo que desea una alerta de acción en iOS:
fuente
var
palabra clave es si estuviera escribiendo en Objective-C.[weak alert]
? Estoy mirando a Swift 3.let textField = alert?.textFields![0] // Force unwrapping because we know it exists.
print("Text field: \(textField?.text)")
Rápido 3/4
Puede usar la siguiente extensión para su conveniencia.
Uso dentro de un
ViewController
:El código de extensión:
fuente
En Swift5 y Xcode 10
Agregue dos campos de texto con las acciones Guardar y Cancelar y lea datos de texto de TextFields
Para obtener más explicación https://medium.com/@chan.henryk/alert-controller-with-text-field-in-swift-3-bda7ac06026c
fuente