Доступ к текстовому полю UIAlertControllers

Я думаю, у меня проблемы с доступом к текстовому полю UIAlertController из действия обработчика. Я погуглил ошибку, но не слишком много из нее получил. Я использую Swift с Xcode 6.0.1. Вот ошибка:

'[AnyObject]?' does not have a member named 'subscript'

@IBAction func addPressed(sender: UIBarButtonItem) {
    var alert = UIAlertController(title: "New Event", message: "Name of the event?", preferredStyle: .ActionSheet)
    alert.addTextFieldWithConfigurationHandler(){
        textField in
        textField.placeholder = "Christmas"
        textField.becomeFirstResponder()
    }
    alert.addAction(UIAlertAction(title: "Save", style: .Default, handler: {
        action in
        var text = alert.textFields[0].text // <-- cant access alert? The exclamation mark appears here
    }))

}

Использование ((alert.textFields[0] as UITextField).text) дает мне точно такую ​​​​же ошибку.


person Linus    schedule 02.10.2014    source источник


Ответы (1)


Все, что вам нужно сделать, это развернуть массив UITextField, а затем привести его к UITextField, потому что на самом деле это массив AnyObject.

Вот как должен выглядеть код:

var text = (alert.textFields![0] as UITextField).text
person Ben    schedule 02.10.2014
comment
Спасибо. Именно то, что я искал. - person Ivan Cantarino; 22.08.2018