1

選択を一方の側からもう一方の側に動的にフィルタリングすることは可能ですか?

例えば

| 車種| 色|

| トヨタ| 青、黄|

| フォード| グリーン、オレンジ、パープル|

| フェラーリ| 赤、緑、黄色|

そのため、UIPickerviewが表示されているときに、さまざまなタイプの車を選択できます。車種を選ぶ際に、指定した色しか選べないようにしたいと思います。

現時点では、UIPickerViewが表示されているときに、すべての車種と1つの色の範囲のみをロードできます。左側のオプションで右側を動的に生成できるかどうかはわかりません。

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 に答える