UIPickerView级联选择

时间:2012-11-16 00:12:13

标签: ios5 ios6 uipickerview

是否可以从另一侧动态过滤选择?

例如

|汽车类型|颜色|

|丰田|蓝色,黄色|

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

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

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

目前,我可以在显示UIPickerView时加载所有车型和仅一种颜色范围。我不知道是否可以通过左侧的选项动态生成右侧。

1 个答案:

答案 0 :(得分:1)

实际上这很简单。您需要根据component 1中选择的内容返回component 0的相关颜色,例如:

- (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];
        });
    }
}

显然,这可以进行优化,但它显示了这个想法。