2012-11-16 51 views
1

是否可以动态过滤选择从一方与另一方?UIPickerView级联式选择

例如

|汽车类型|颜色|

|丰田|蓝色,黄色|

|福特|绿色,橙色,紫色|

|法拉利|红色,绿色,黄色|

所以当UIPickerview显示时,我可以选择不同类型的汽车。选择汽车类型后,我希望只能选择指定的颜色。

此刻,我可以加载所有的车型,只有一个范围的颜色,当UIPickerView显示。我不知道是否可以用左边的选项动态生成右手边。

回答

1

这其实很简单。你需要根据什么是component 0选择返回相关的颜色component 1,例如:

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
    //... 
    case 1: 
    { 
     NSArray *colors = [self colorsWithSelection:self.selectedRow0]; 
     return colors[row]; 
    } 
    //... 
} 

然后执行以下操作:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
    if (component == 0) 
    { 
     self.selectedRow0 = row; 
     [pickerView reloadComponent:1]; 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      [pickerView selectRow:0 inComponent:1 animated:YES]; 
     }); 
    } 
} 

显然,这可以优化,但它给出了这个概念。

+0

感谢您的想法,我只需要didSelectRow功能来使它工作。干杯。 – fes