我在一个ViewController上使用了多个Pickerview。我在相应的Pickerviews中获得了正确的数据,但是Pickerview中行对称的视图不正确。第1个Pickerview中的数据视图是正确的,但是在第二个Pickerview中,行是从Pickerview的底部开始的。
我已经连接了两个Pickerviews的屏幕截图。
1st pickerview
第二个Pickerview
为了区分两个选择器,我使用了Pickerview标签。
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if pickerView.tag == 31{
return arr_statename.count
}else{
return arr_cityname.count
}
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if pickerView.tag == 31{
return arr_statename[row]
}else{
return arr_cityname[row]
}
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView.tag == 31{
state.text = arr_statename[row]
}else{
city.text = arr_cityname[row]
}
}
有人可以帮忙吗?谢谢。
尝试一下,我希望我可能会有所帮助!
只需添加观察者即可加载
NSNotificationCenter.defaultCenter().addObserver(self, selector:#selector(self.updatePicker), name: UITextFieldTextDidBeginEditingNotification, object: nil)
并重新加载组件
func updatePicker(){
self.pickerView.reloadAllComponents()
}
您是否考虑过使用一个带有2个组件的单个pickerview,而不是在同一viewController上使用两个单独的pickerviews?如果它满足应用程序的需求,则使用单个多组件Pickerview提供了更好的UI,并避免了您遇到的问题类型。