1

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

例如

| 车型 | 颜色 |

| 丰田 | 蓝色,黄色 |

| 福特 | 绿色、橙色、紫色 |

| 法拉利 | 红、绿、黄 |

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

目前,当 UIPickerView 显示时,我只能加载所有汽车类型和一种颜色范围。我不知道是否可以使用左侧的选项动态生成右侧。

4

1 回答 1

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

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

于 2012-11-16T05:41:59.570 回答