pickerを複数個実装する方法
解決したいこと
ドラムロール式のpickerに関する質問です。一つの画面内に複数のpickerを実装しようとしているのですがうまくいきません。
textfieldをタップした際に選択肢が表示されて選ぶ形になっています。一つ目に実装したyearについては正常に動作しています。しかし、pickerview2に関しては、tapをすると選択肢の内容がpickerview(year)のものになってしまいます。そのうちの一つの選択肢を選択してdoneを押すtextfieldに反映される内容はkalistの内容が表示されます。
つまり、選択肢にkalistが表示されずに困っています。表示に関する記述はfuncの部分だと思うのですがどのように改善するべきかわからずに困っています。
textfieldのka1をタップした際にkalistが表示されるようにする方法を教えていただけたら幸いです。よろしくお願いします。
class new: UIViewController,UINavigationControllerDelegate,UITextFieldDelegate, UIPickerViewDelegate, UIPickerViewDataSource,UITextViewDelegate {
var list : [String] = [""]
var yeass = ""
var kalist : [String] = ["i","kkkkk","hfuytf","gtfytfty","eeeee"]
let pickerView2 = UIPickerView()
let pickerView = UIPickerView()
@IBOutlet weak var ka1: UITextField!
@IBOutlet weak var years: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
let year9 = Calendar.current.component(.year, from: Date()) - 9
let year8 = Calendar.current.component(.year, from: Date()) - 8
let year7 = Calendar.current.component(.year, from: Date()) - 7
let year6 = Calendar.current.component(.year, from: Date()) - 6
let sNum9:String = String(year9)
let sNum8:String = String(year8)
let sNum7:String = String(year7)
let sNum6:String = String(year6)
list = [sNum9,sNum8,sNum7,sNum6]
// ピッカー設定
pickerView.delegate = self
pickerView.dataSource = self
pickerView2.delegate = self
pickerView2.dataSource = self
//初期値
pickerView.selectRow(8, inComponent: 0, animated: false)
pickerView2.selectRow(1, inComponent: 0, animated: false)
// 決定バーの生成
let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 35))
let spacelItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(done))
toolbar.setItems([spacelItem, doneItem], animated: true)
let toolbar2 = UIToolbar(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 35))
let spacelItem2 = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
let doneItem2 = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(done2))
toolbar2.setItems([spacelItem2, doneItem2], animated: true)
ka1.inputView = pickerView2
ka1.inputAccessoryView = toolbar2
// インプットビュー設定
years.inputView = pickerView
years.inputAccessoryView = toolbar
}
@objc func done() {
years.endEditing(true)
years.text = "\(list[pickerView.selectedRow(inComponent: 0)])"
yeass = "\(list[pickerView.selectedRow(inComponent: 0)])"
}
@objc func done2() {
ka1.endEditing(true)
ka1.text = "\(kalist[pickerView3.selectedRow(inComponent: 0)])"
ka1.text = "\(kalist[pickerView3.selectedRow(inComponent: 0)])"
}
func numberOfComponents2(in pickerView2: UIPickerView) -> Int {
return 1
}
func pickerView2(_ pickerView2: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return kalist.count
}
func pickerView2(_ pickerView2: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return kalist[row]
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
// ドラムロールの行数
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return list.count
}
// ドラムロールの各タイトル
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return list[row]
}
}
0