【问题标题】:UIPickerView Cascade-like SelectionUIPickerView 级联式选择
【发布时间】:2012-11-04 16:47:26
【问题描述】:

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

例如

|车型 |颜色 |

|丰田 |蓝色、黄色 |

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

|法拉利 |红、绿、黄 |

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

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

【问题讨论】:

    标签: ios5 ios6 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];
            });
        }
    }
    

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

    【讨论】:

    • 感谢您的想法,我只需要 didSelectRow 功能即可使其工作。干杯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多