###前提・実現したいこと
xcode8,swift3で、プログラミングを始めてまだ数ヶ月の初心者です。理解力の乏しい点などご迷惑をおかけしてしまうかと思いますが、宜しくお願いします。
同一viewcontroller内のtextfieldを押した際にそれぞれに対応するpicker viewを表示するようにしたいです。
###発生している問題・エラーメッセージ
1つのみの実装はできたのですが、他のtextfield用のを作ろうとしても、同じリストが出てしまったり、二つ目のテキストフィールドを触ったのに一つ目の値が変わってしまったりなどなかなかうまくいきません。
下記は、一つだけ実装できたコードです。
import UIKit class FirstViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource { @IBOutlet weak var benderPicker: UITextField! @IBOutlet weak var haniTextField: UITextField! @IBOutlet weak var kiboTextField: UITextField! let pickerView = UIPickerView() var array = ["大企業", "中堅", "ベンチャー"] override func viewDidLoad() { super.viewDidLoad() pickerView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: pickerView.bounds.size.height) pickerView.delegate = self pickerView.dataSource = self let vi = UIView(frame: pickerView.bounds) vi.backgroundColor = UIColor.white vi.addSubview(pickerView) benderPicker.inputView = vi //ダウンとキャンセルのツールバー let toolBar = UIToolbar() toolBar.barStyle = UIBarStyle.default toolBar.isTranslucent = true toolBar.tintColor = UIColor.black let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.done, target: self, action: #selector(FirstViewController.donePressed)) let cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.plain, target: self, action: #selector(FirstViewController.cancelPressed)) let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil) toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false) toolBar.isUserInteractionEnabled = true toolBar.sizeToFit() benderPicker.inputAccessoryView = toolBar } // Done func donePressed() { view.endEditing(true) } // Cancel func cancelPressed() { benderPicker.text = “” view.endEditing(true) } func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { return array[row] } func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return array.count } func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { benderPicker.text = array[row] } }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/22 01:19
2017/03/03 14:30
2017/03/04 05:53
2017/03/04 11:58