How to add TextField to UIAlertController in Swift

前端 未结 13 707
余生分开走
余生分开走 2020-12-07 20:03

I am trying to show a UIAlertController with a UITextView. When I add the line:

    //Add text field
    alertController.addTextFie         


        
相关标签:
13条回答
  • 2020-12-07 20:07

    To add alertController with one textField (Swift 5)

    func openAlert(){
        let alertController = UIAlertController(title: "Title", message: "", preferredStyle: .alert)
        alertController.addTextField { (textField : UITextField!) -> Void in
            textField.placeholder = "Enter name"
        }
    
        let saveAction = UIAlertAction(title: kAlertConfirm, style: .default, handler: { alert -> Void in
            if let textField = alertController.textFields?[0] {
                if textField.text!.count > 0 {
                    print("Text :: \(textField.text ?? "")")
                }
            }
        })
    
        let cancelAction = UIAlertAction(title: kAlertCancel, style: .default, handler: {
            (action : UIAlertAction!) -> Void in })
    
        alertController.addAction(cancelAction)
        alertController.addAction(saveAction)
    
        alertController.preferredAction = saveAction
    
        self.present(alertController, animated: true, completion: nil)
    }
    
    0 讨论(0)
  • 2020-12-07 20:08

    add TextField to UIAlertController and TextField text Display on UILabel in Swift

    let alert = UIAlertController(title: "Alert", message: "", preferredStyle: .alert)
    
    alert.addTextField { (textField) in
    textField.placeholder = "First Name"
    }
    alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { [weak alert] (_) in
    let textField = alert?.textFields![0]
    self.label.text = textField?.text  }))
    
    self.present(alert, animated: true, completion: nil)
    
    0 讨论(0)
  • 2020-12-07 20:12

    Swift5

    First class conforms to the UITextFieldDelegate , then create new textField property

        private var myTextField : UITextField?
    
        // now where u want to add code
        let alertContoller = UIAlertController.init(title: "Add", message: "My message to user", preferredStyle: .alert)
        alertContoller.addTextField { (textField) in
            // make sure your outside any property should be accessed with self here
            self.myTextField = textField
            //Important step assign textfield delegate to self
            self.myTextField?.delegate = self 
            self.myTextField?.placeholder = self.textFieldPlaceholderText
        }
        let action = UIAlertAction.init(title: "Ok", style: .default) { action in
            print("Alert tapped")
        }
        alertContoller.addAction(action)
        present(alertContoller, animated: true, completion:nil)
    

    Thanks

    0 讨论(0)
  • 2020-12-07 20:13

    Swift 5.1

    alert.addTextField { (textField) in
        textField.placeholder = "Enter First Name"
    }
    

    Use this code, I am running this code in my app successfully.

    @IBAction func addButtonClicked(sender : AnyObject){
        let alertController = UIAlertController(title: "Add New Name", message: "", preferredStyle: UIAlertControllerStyle.Alert)
        alertController.addTextFieldWithConfigurationHandler { (textField : UITextField!) -> Void in
            textField.placeholder = "Enter Second Name"
        }
        let saveAction = UIAlertAction(title: "Save", style: UIAlertActionStyle.Default, handler: { alert -> Void in
            let firstTextField = alertController.textFields![0] as UITextField
            let secondTextField = alertController.textFields![1] as UITextField
        })
        let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Default, handler: {
            (action : UIAlertAction!) -> Void in })
        alertController.addTextFieldWithConfigurationHandler { (textField : UITextField!) -> Void in
            textField.placeholder = "Enter First Name"
        }
        
        alertController.addAction(saveAction)
        alertController.addAction(cancelAction)
        
        self.presentViewController(alertController, animated: true, completion: nil)
    }
    

    Edited: Swift 3.0 version

    @IBAction func addButtonClicked(_ sender: UIButton){
        let alertController = UIAlertController(title: "Add New Name", message: "", preferredStyle: .alert)
        alertController.addTextField { (textField : UITextField!) -> Void in
            textField.placeholder = "Enter Second Name"
        }
        let saveAction = UIAlertAction(title: "Save", style: .default, handler: { alert -> Void in
            let firstTextField = alertController.textFields![0] as UITextField
            let secondTextField = alertController.textFields![1] as UITextField
            print("firstName \(firstTextField.text), secondName \(secondTextField.text)")
        })
        let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: { (action : UIAlertAction!) -> Void in })
        alertController.addTextField { (textField : UITextField!) -> Void in
            textField.placeholder = "Enter First Name"
        }
    
        alertController.addAction(saveAction)
        alertController.addAction(cancelAction)
        
        self.present(alertController, animated: true, completion: nil)
    }
    
    0 讨论(0)
  • 2020-12-07 20:13

    To add a text field in Swift 3.0:

    let alertController = UIAlertController(title: "Title", message: "", preferredStyle: .alert)
    alertController.addAction(UIAlertAction(title: "Save", style: .default, handler: { alert -> Void in
        let textField = alertController.textFields![0] as UITextField
        // do something with textField
    }))
    alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
    alertController.addTextField(configurationHandler: {(textField : UITextField!) -> Void in
        textField.placeholder = "Search"
    })   
    self.present(alertController, animated: true, completion: nil)
    
    0 讨论(0)
  • 2020-12-07 20:15

    How to add textField to AlertView? Let's keep it short and simple.

    This works for Swift 3.0 and above.

    var nameField: UITextField?
    let alertController = UIAlertController(title: "Add Number", message: nil, preferredStyle: .alert)
    // Add textfield to alert view
    alertController.addTextField { (textField) in
        nameField = textField
    }
    

    First, you instantiate an object of UIAlertController and then you add a text field to it by accessing addTextField member of UIAlertController class.

    0 讨论(0)
提交回复
热议问题