前提・実現したいこと
今年に入って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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/17 14:14