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

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

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

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

Q&A

解決済

2回答

2973閲覧

UITextFieldにUIPickerViewで選択した値が入らない

shuko

総合スコア8

Swift

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

0グッド

0クリップ

投稿2018/07/16 02:50

前提・実現したいこと

今年に入ってSwiftを勉強しはじめた初心者のため、
質問にも違和感があるかもしれませんが、ご回答いただけると嬉しいです。
よろしくお願いいたします。

◆ 実現したいこと
1.ナビゲーションバーの保存ボタンを押すと、SCLAlertViewが開く(ライブラリを使用しています)
2.SCLAlertView上に設置したTextFieldを選択すると、PickerViewが開く
3.PicekrViewで選択した行の値が、TextFieldへ表示される

発生している問題・エラーメッセージ

エラーメッセージは表示されないのですが、
PickerViewで選択しても、TextFieldが空のままとなってしまいます。

該当のソースコード

Swift

1import UIKit 2import SCLAlertView 3 4class AddReportViewController2: UITextViewDelegate, UIPickerViewDelegate, UIPickerViewDataSource { 5 6 // 変数定義 7 var groupNameFld = UITextField() 8 var groupNameArr: [String] = ["りんご", "みかん", "スイカ", "もも"] 9 var groupNamePicker = UIPickerView() 10 11 override func viewDidLoad() { 12 super.viewDidLoad() 13 } 14 15 override func didReceiveMemoryWarning() { 16 super.didReceiveMemoryWarning() 17 // Dispose of any resources that can be recreated. 18 } 19 20 override func viewWillAppear(_ animated: Bool) { 21 super.viewWillAppear(animated) 22 navigationItem.rightBarButtonItem = UIBarButtonItem(title: "保存", style: UIBarButtonItemStyle.plain, target: self, action: #selector(saveReport)) 23 } 24 25 // 保存ボタンを押したときに実行 26 @objc func saveReport() { 27 // SLCAlertviewの設定 28 let appearance = SCLAlertView.SCLAppearance( 29 showCircularIcon: false 30 ) 31 let alert = SCLAlertView(appearance: appearance) 32 33 // グループ選択の設定 34 let test = alert.addTextField() 35 test.text = groupNameFld.text 36 37 // groupNamePickerの設定 38 // 選択行のハイライト 39 groupNamePicker.showsSelectionIndicator = true 40 // プロトコルの設定 41 groupNamePicker.delegate = self 42 groupNamePicker.dataSource = self 43 44 // TextFieldとPickerViewの関連付け 45 test.inputView = groupNamePicker 46 47 // ポップアップの表示設定 48 alert.showTitle( 49 "レポートの設定", 50 subTitle: "レポート詳細を設定してください。", 51 style: .edit, 52 closeButtonTitle: "保存する", 53 colorStyle: 0xFF8DB1, 54 colorTextButton: 0xFFFFFF 55 ) 56 57 dismiss(animated: true, completion: nil) 58 } 59 60 // PickerViewの列数を設定 61 func numberOfComponents(in pickerView: UIPickerView) -> Int { 62 return 1 63 } 64 65 // PickerViewの行数を設定 66 func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 67 return groupNameArr.count 68 } 69 70 // PickerViewに表示する文字列を設定 71 func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 72 return groupNameArr[row] 73 } 74 75 // PickerViewで行を選択したときに実行 76 func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 77 // groupNameFldに配列の文字列として代入 78 groupNameFld.text = groupNameArr[row] 79 } 80}

試したこと

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

ベストアンサー

アラート内に表示されているTextFieldがgroupNameFldじゃないような?
.addTextField()の戻り値がアラート内のTextFieldのようですので、

swift

1let test = alert.addTextField() 2test.text = groupNameFld.text

swift

1groupNameFld = alert.addTextField()

で、動きませんかね?

投稿2018/07/17 00:40

fuzzball

総合スコア16731

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

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

shuko

2018/07/17 14:14

ご回答ありがとうございます。 こちらで解決できました!!ご丁寧にありがとうございました。
guest

0

swift

1groupNamePicker.delegate = self 2groupNamePicker.dataSource = self

これらがviewDidLoadもしくはviewWillAppear時に呼ばれる必要があるのではないでしょうか?

投稿2018/07/16 03:39

hiro_n

総合スコア70

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

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

shuko

2018/07/16 14:11 編集

ご回答ありがとうございます! 試してみたのですが、うまくいかない状況が続いています...>< デバッグの方法もあまり詳しくわかっていないのですが、 いたるところにprintを書いて、値が取得できているか確認したところ、 下記の中でしか値が取れていませんでした... ``` // PickerViewで行を選択したときに実行 func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { // groupNameFldに配列の文字列として代入 groupNameFld.text = groupNameArr[row] print(groupNameFld.text as Any) } ``` ご回答いただいたように呼ばれるタイミング?場所?がおかしいようなので、 もう少し色々試してみたいと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問