2016-12-17 5 views
0

一般に、UITextFieldのテキストを変更するたびに、StoryboardファイルからIBOutletをドラッグし、「編集が変更されました」オプションを選択します。プログラムでUIAlertControllerでテキストフィールドを変更する

しかし、私はUIAlertControllerでUITextFieldのテキストを取得したいので、テキストフィールドはストーリーボードではなくプログラムで作成されます。

(Alertウィンドウ内の)テキストフィールドが変更されるたびに実行される関数をプログラムで作成するにはどうすればよいですか?私は必要なもの

func textHasChanged(textField: TextField) { 
    print(textField.text) 
} 

入力が "猫" 必要な出力があることが必要である場合:

"C"

"CA"

"猫"

どうすればいいですか?

注:同一ファイル内でこの機能を

textField.addTarget(self, action: Selector(self.textFieldDidChange(_:)), for: UIControlEvents.editingChanged) 

::私は.addtarget方法をやってみました

func textFieldDidChange(txtField: UITextField) 

しかし、私はこのエラーを得続ける:タイプの 価値 " name of my viewcontroller "にはメンバーがいません" textFieldDidChange "

私はこの質問を見てきましたが、私は時代遅れの答えを与えてくれました。ありがとう!

+0

。 –

答えて

0

これを試してみてください:

あなたがデリゲートを設定することで、仕事をするために、現在のクラスを求めていないので、だ
@IBAction func displayAlert(_ sender : AnyObject) { 
    let alertController = UIAlertController(title: "Enter some text", message: "Please enter some text in the field below", preferredStyle: .alert) 
    alertController.addTextField() 
    alertController.addAction(UIAlertAction(title: "OK", style: .default) { action in 
     print("User pressed OK") 
    }) 
    alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel) { action in 
     print("User pressed Cancel") 
    }) 


    if let textField = alertController.textFields?.first { 
     textField.addTarget(self, action: #selector(ViewController.textHasChanged), for: .editingChanged) 
    } 
    self.present(alertController, animated: true) 
} 
関連する問題