I am trying to show a UIAlertController with a UITextView. When I add the line:
    //Add text field     alertController.addTextFieldWithConfigurationHandler { (textField) -> Void in     }           I get a Runtime error: 
fatal error: unexpectedly found nil while unwrapping an Optional value
    let alertController: UIAlertController = UIAlertController(title: "Find image", message: "Search for image", preferredStyle: .Alert)      //cancel button     let cancelAction: UIAlertAction = UIAlertAction(title: "Cancel", style: .Cancel) { action -> Void in         //cancel code     }     alertController.addAction(cancelAction)      //Create an optional action     let nextAction: UIAlertAction = UIAlertAction(title: "Search", style: .Default) { action -> Void in         let text = (alertController.textFields?.first as! UITextField).text         println("You entered \(text)")     }     alertController.addAction(nextAction)      //Add text field     alertController.addTextFieldWithConfigurationHandler { (textField) -> Void in         textField.textColor = UIColor.greenColor()     }     //Present the AlertController     presentViewController(alertController, animated: true, completion: nil)   This is presented inside my ViewController via an IBAction.
I have downloaded the code from here and it works fine. I copied and pasted that method into my code and it breaks. The presence of self on the last line has no impact.
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) } 
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With