質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

347閲覧

textfield付きアラート

qyoeku

総合スコア25

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/08/17 16:35

textfieldに書かれた内容を取得するコードとして、このコードは間違っていますか?

swift

1 alertController.addTextField { textField -> Void in 2 inputTextField = textField 3 textField.placeholder = "申請文" 4 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thyda.eiqau

2019/08/17 16:40

期待通りに動かなければ間違っているし、動くのであれば間違っていないということになると思いますが、実際にどのような挙動になるのですか?
qyoeku

2019/08/17 17:39

実は事情があってコードが動かせないのですが、このクロージャーはテキストが変更する度に実行される仕様なのでしょうか?(このあとOKボタンを押すとinputTextField.textが使われるので、そこに入力したテキストが入っていれば正解です)
qyoeku

2019/08/17 17:52

明示的には書かれていないように思えるのですが、これはおそらく一回しか呼ばれないという解釈でいいのでしょうか?
guest

回答1

0

ベストアンサー

追記・修正依頼の欄にも書きましたが、 addTextField のドキュメント をよく読まれたほうがよいです。

Adds a text field to an alert.

と書いてあるとおり、これは text field を add するためのメソッドであって、すでに add されている text field を取得するものではありません。よって、ご質問の、

textfieldに書かれた内容を取得するコードとして、このコードは間違っていますか?

に対する回答としては、**はい、間違っています。**となります。

OKボタンを押したときに入力された内容を参照したいようですので、このようなコードになるのではないかと思います。

swift

1let alertController = UIAlertController(title: "Alert Title", message: "Alert Message", preferredStyle: .alert); 2 3// alertController に UITextField を追加 4alertController.addTextField { (textField) in 5 textField.placeholder = "申請文"; 6 textField.tag = 99; 7} 8 9let alertActionOK = UIAlertAction(title: "OK", style: .default, handler: { (action) in 10 // alertController が持っているすべての UITextField を配列で取得 11 guard let textFields = alertController.textFields else { 12 return; 13 } 14 15 // すべての UITextFields に対して、それぞれに必要な処理をする 16 for textField in textFields { 17 if textField.tag == 99 { 18 print("value: (textField.text ?? "N/A")"); 19 } 20 } 21}); 22alertController.addAction(alertActionOK); 23 24present(alertController, animated: true, completion: nil);

投稿2019/08/17 18:23

thyda.eiqau

総合スコア2982

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

qyoeku

2019/08/18 04:25

ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問