Pickerview数据在使用多个Pickerview时不合适



我在一个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,并避免了您遇到的问题类型。

最新更新