PickerView数据不适合使用多个pickerview

时间:2017-04-21 02:45:43

标签: ios swift uipickerview

我在一个viewcontroller上使用多个pickerview。我在相应的选择器视图中获得了正确的数据,但是pickerview中的行对称视图不正确。第一个pickerview中的数据视图是正确的,但在第二个pickerview中,行从pickerview的底部开始。

我附上了两个pickerviews的截图。

1st pickerview

2nd pickerview

为了区分2个选择器,我使用了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]
    }
}

有人可以帮忙吗?感谢。

2 个答案:

答案 0 :(得分:0)

尝试这个我希望可能会有所帮助!!

只需在视图中添加观察者加载

NSNotificationCenter.defaultCenter().addObserver(self, selector:#selector(self.updatePicker), name: UITextFieldTextDidBeginEditingNotification, object: nil)

并重新加载组件

func updatePicker(){
    self.pickerView.reloadAllComponents()
}

答案 1 :(得分:0)

您是否考虑在同一个viewController上使用带有2个组件的单个pickerView而不是两个单独的pickerView?如果它满足您的应用程序的需求,使用单个多组件pickerView可提供更好的UI并避免您遇到的问题类型。