Get input value from TextField in iOS notification in Swift

I am trying to make a warning message with input, and then get the value from the input. I found many useful tutorials on how to make an input box. but I cannot get the value from the warning.

+92
input ios xcode swift uialertcontroller
Oct 25 '14 at 21:27
source share
3 answers

Updated for Swift 3 and above:

//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] (_) in let 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

Assuming you need an iOS action alert:

 //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) -> Void 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] (action) -> Void in let textField = alert.textFields![0] as UITextField println("Text field: \(textField.text)") })) // 4. Present the alert. self.presentViewController(alert, animated: true, completion: nil) 
+290
Oct 25 '14 at 21:34
source share

Swift 3/4

You can use the extension below for your convenience.

Use inside 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 ?? "")") } 

Extension Code:

 extension UIViewController { func showInputDialog(title:String? = nil, subtitle:String? = nil, actionTitle:String? = "Add", cancelTitle:String? = "Cancel", inputPlaceholder:String? = nil, inputKeyboardType:UIKeyboardType = UIKeyboardType.default, cancelHandler: ((UIAlertAction) -> Swift.Void)? = nil, actionHandler: ((_ text: String?) -> Void)? = nil) { let alert = UIAlertController(title: title, message: subtitle, preferredStyle: .alert) alert.addTextField { (textField:UITextField) in textField.placeholder = inputPlaceholder textField.keyboardType = inputKeyboardType } alert.addAction(UIAlertAction(title: actionTitle, style: .destructive, handler: { (action:UIAlertAction) in guard let textField = alert.textFields?.first else { actionHandler?(nil) return } actionHandler?(textField.text) })) alert.addAction(UIAlertAction(title: cancelTitle, style: .cancel, handler: cancelHandler)) self.present(alert, animated: true, completion: nil) } } 
+23
Jan 02 '18 at 18:16
source share

In Swift5 and Xcode 10

Add two text fields with the actions "Save" and "Cancel" and read the text data 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) in let textField = alert.textFields![0] as UITextField let textField2 = alert.textFields![1] as UITextField if 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) } 

For a more detailed explanation https://medium.com/@chan.henryk/alert-controller-with-text-field-in-swift-3-bda7ac06026c

+2
01 Feb '19 at 6:15
source share



All Articles