当我在UIPickerView的第一列中选​​择行时,筛选第二列

时间:2013-09-07 10:22:52

标签: filter uipickerview

我在pickerview中有两列。 在第一列中有三个值:All,Fruits and Vegetables。 在第二列中有一些值:Apple,Carrot,Celery,Cherry,Pear,Tomato。

我第一次看到第一列中的全部和第二列中的所有元素。 但是当我想在第一栏中选择Fruit时,我想在第二栏中看到Apple,Cherry和Pear。 有可能吗?

非常感谢,特别是谁可以发布一个例子。

1 个答案:

答案 0 :(得分:2)

是的,这是可能的 作为您的示例,您只需执行以下步骤

1)制作具有多个阵列的字典,如此

 mainArray =[ NSMutableArray new]; // for 1st column value
[mainArray addObject:@"All"];
[mainArray addObject:@"Fruites"];
[mainArray addObject:@"Vegetables"];

NSMutableArray *DummyArray = [[ NSMutableArray alloc]init];
[DummyArray addObject:@"Apple"];
[DummyArray addObject:@"Mango"];
[DummyArray addObject:@"Cherry"];
[DummyArray addObject:@"Table"];
[DummyArray addObject:@"Chair"];
[DummyArray addObject:@"Pear"];
[DummyArray addObject:@"Tomato"];


mainDict = [NSMutableDictionary new];
[mainDict setValue:DummyArray   forKey:@"All"];

NSMutableArray *DummyArrayF = [[ NSMutableArray alloc]init];
[DummyArrayF addObject:@"Apple"];
[DummyArrayF addObject:@"Mango"];
[DummyArrayF addObject:@"Cherry"];
[mainDict setValue:DummyArrayF   forKey:@"Fruites"];


NSMutableArray *DummyArrayV = [[ NSMutableArray alloc]init];
[DummyArrayV addObject:@"Pear"];
[DummyArrayV addObject:@"Tomato"];
[mainDict DummyArrayV   forKey:@"Vegetables"];

selectValue = @"All";

这里' selectValue'显示哪个

 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
      return  2;
}

//返回每个组件中的行数。

  - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
switch (component) {

    case 0:
        return 3;
        break;

        case 1:
        return [[mainDict valueForKey:selectValue] count];
        break;

     }
    return 0;
}

  - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
switch (component) {
    case 0:
        return mainArray[row];
        break;

    case 1:
        return [mainDict valueForKey:selectValue][row];
        break;
    default:
        break;
}
return @"";
}

  - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

{
 switch (component) {
    case 0:
        selectValue = mainArray[row];
        [pickerView1 reloadAllComponents];

        break;

    default:
        break;
}

 }

如果有任何问题可以随意提出感谢