3

ハンドラー アクション内から UIAlertController の textField にアクセスするのに問題があると思います。私はエラーをグーグルで調べましたが、あまり得られませんでした。Xcode 6.0.1 で Swift を使用しています。エラーは次のとおりです。

'[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)すると、まったく同じエラーが発生します。

4

1 に答える 1

5

実際には AnyObject の配列であるため、UITextField の配列をアンラップして UITextField にキャストするだけです。

コードは次のようになります。

var text = (alert.textFields![0] as UITextField).text
于 2014-10-02T06:50:34.643 に答える