触摸时扩展PickerViews组件

时间:2010-05-18 15:55:54

标签: iphone objective-c uikit uipickerview

我有一个UIPickerView,可以显示可变数量的组件。在其控制器中,我有-pickerView:withForComponent:

- (CGFloat)pickerView:(UIPickerView *)pv widthForComponent:(NSInteger)component {
    CGFloat f;
    if (component == 0) {
        f = 30;

    } else {
        if ([componentsData count]>2) {
            f = 260.0/([componentsData count]-1);
        } else{
            f = 260.0;
        }
    } 
    return f;
}

如果我调用[pickerView reloadAllComponents],这样可以正常工作,但是如果触摸它会如何扩展组件宽度(当然会缩小所有其他组件宽度)?

1 个答案:

答案 0 :(得分:1)

要做到这一点,即使您的选择器选项都是文本,您也必须使用

pickerView:viewForRow:forComponent:reusingView:

你基本上需要为你的选择器选项生成一个UIViews数组,并将它们保存在一个数组中。然后,当选择一行时,直接展开该UIView,并遍历该数组,相应地收缩其他数据。