简体   繁体   English

在同一视图上填充与在第一个选择器视图中选择的值相对应的第二个选择器

[英]Populating second picker corresponding to the value selected in first picker view on same view

I want to use two picker views in same view where first picker view is of category and when a category is selected, its corresponding values are added to second picker view. 我想在同一视图中使用两个选择器视图,其中第一个选择器视图属于类别,并且当选择一个类别时,其对应的值将添加到第二个选择器视图。 How can I make it possible? 我怎样才能实现呢? Values are taken from JSON. 值取自JSON。

This is fairly simple. 这很简单。 You must be populating your second picker view from an array. 您必须从数组填充第二个选择器视图。

Make your view controller the delegate and data source for both the picker views. 使您的视图控制器成为两个选择器视图的委托和数据源。

Then when the 'func pickerView(UIPickerView, didSelectRow: Int, inComponent: Int)' delegate method is called when you select an item in the first picker view, update the data array for the second picker view and call reloadAllComponents on it 然后,当您在第一个选择器视图中选择一个项目时调用“ func pickerView(UIPickerView,didSelectRow:Int,inComponent:Int)”委托方法时,请更新第二个选择器视图的数据数组并在其上调用reloadAllComponents

Here is some code 这是一些代码

func pickerView(UIPickerView, didSelectRow: Int, inComponent: Int)
{
    if (pickerView == self.firstPicker)
    {
        //calculate your data array for the second picker here
        self.secondPickerView.reloadAllComponents()
    }
}

You can get value selected in first picker view like this 您可以像这样在第一个选择器视图中获得选定的值

NSInteger row;
NSArray *firstPickerViewDataArray;
UIPickerView *firstPickerView;
NSString *selectedValue;

row = [firstPickerView selectedRowInComponent:0];
selectedValue  = [firstPickerViewDataArray objectAtIndex:row];

Get the data from server or wherever you want and store that into another array like 从服务器或任何需要的地方获取数据,并将其存储到另一个数组中,例如

NSArray * secondPickerViewDataArray;

After that you can use below method to show values 之后,您可以使用以下方法显示值

    - (NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
        if (pickerView == secondPickerView){
          // Do whatever you want based on selected value in first PickerView
            return secondPickerViewDataArray[row];
            }else{
   //stuff for first pickerView
         }
            }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM