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

时间:2016-09-29 09:11:15

标签: ios xcode uipickerview

我想在同一视图中使用两个选择器视图,其中第一个选择器视图属于类别,当选择一个类别时,其相应的值将添加到第二个选择器视图中。我怎样才能成功呢?值来自JSON。

2 个答案:

答案 0 :(得分:3)

这很简单。您必须从数组中填充第二个选择器视图。

使视图控制器成为两个选择器视图的委托和数据源。

然后当' func pickerView(UIPickerView,didSelectRow:Int,inComponent:Int)'在第一个选择器视图中选择项目时调用delegate方法,更新第二个选择器视图的数据数组并在其上调用reloadAllComponents

这是一些代码

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

答案 1 :(得分:1)

您可以在第一个选择器视图中选择值,如此

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

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

从服务器或任何地方获取数据并将其存储到另一个数组中,如

NSArray * secondPickerViewDataArray;

之后,您可以使用以下方法显示值

    - (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
         }
            }