Во-первых, вы назначаете сборщик тому же текстовому полю searchMonth
, по вашему мнению, загрузилось.
Вы должны назвать свой сборщик так, чтобы лучше понять
let monthPicker = UIPickerView()
let datePicker = UIPickerView()
Второйвам просто нужно заменить ваше состояние соответствующим представлением выбора, ваши методы будут выглядеть следующим образом: -
@IBOutlet weak var searchMonth: UITextField!
@IBOutlet weak var searchDate: UITextField!
var months =["January","Febrary","March","April","May","June","July","August","September","October","November","December"]
var year = ["2017","2018","2019"]
let monthPicker = UIPickerView()
let datePicker = UIPickerView()
override func viewDidLoad() {
super.viewDidLoad()
searchMonth.inputView = monthPicker
monthPicker.delegate = self
monthPicker.dataSource = self
searchDate.inputView = datePicker
datePicker.delegate = self
datePicker.dataSource = self
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if pickerView == monthPicker {
return months.count
}else if pickerView == datePicker {
return year.count
}else {
return 0
}
}
func pickerView( _ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if pickerView == monthPicker {
return months[row]
}else if pickerView == datePicker {
return year[row]
}else {
return ""
}
}
func pickerView( _ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView == monthPicker {
searchMonth.text = months[row]
}else if pickerView == datePicker {
searchDate.text = year[row]
}
}
Если вы используете только два средства выбора в вашем контроллере представления, вы можете уменьшить размер кода с помощьюпростые условия, такие как: -
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return pickerView == monthPicker ? months.count : year.count
}