alertview textField, возвращающий пустую строку - PullRequest
0 голосов
/ 07 февраля 2019
class x: UIViewController {

    let fromLocationLbl = UILabel()

    override func viewDidLoad() {
        super.viewDidLoad()

        let editTextField = UITextField()

        let alertController = UIAlertController(title: "Alert!", message: "Please enter from location", preferredStyle: .alert)
        alertController.addTextField { editTextField in
            editTextField.placeholder = "Enter correct name"
            // editTextField.text = self.fromLocationLbl.text
        }

        let confirmAction = UIAlertAction(title: "Change", style: UIAlertActionStyle.default) { (UIAlertAction) in
            print(editTextField.text) ///////printing optional("")
            self.fromLocationLbl.text = editTextField.text
        }

        alertController.addAction(confirmAction)
        let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
        alertController.addAction(cancelAction)
        present(alertController, animated: true, completion: nil)
    }
}

1 Ответ

0 голосов
/ 07 февраля 2019

editTextField - это не то же самое, что 1002 *, что вы добавляете в оповещение.В addTextField замыкании editTextField - это просто имя параметра замыкания, которое можно заменить любым другим именем

alertController.addTextField { textField in
    textField.placeholder = "Enter correct name"
    // textField.text = self.fromLocationLbl.text
}

Вам необходимо получить ссылку на первое текстовое поле в вашем alertController

let confirmAction = UIAlertAction(title: "Change", style: .default) { _ in
    self.fromLocationLbl.text = alertController.textFields?.first?.text
}
...