我有一个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]
,这样可以正常工作,但是如果触摸它会如何扩展组件宽度(当然会缩小所有其他组件宽度)?
答案 0 :(得分:1)
要做到这一点,即使您的选择器选项都是文本,您也必须使用
pickerView:viewForRow:forComponent:reusingView:
你基本上需要为你的选择器选项生成一个UIViews数组,并将它们保存在一个数组中。然后,当选择一行时,直接展开该UIView,并遍历该数组,相应地收缩其他数据。