2012-02-18 60 views
2

我知道我可以使用委托方法– pickerView:widthForComponent:设置UIPickerView的组件宽度,但是如果我有2个组件,并且只想更改第一个组件的宽度并将第二个组件的宽度保留为默认值(iOS SDK会找出的东西)。我将如何实现这一目标?iOS - 更改UIPickerView组件宽度

回答

4

除非你使用像这样的if语句和手动设置的默认值(找出它是什么后):

- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component { 
    if (component == 0) 
     return customWidth; 
    return defaultValue; 
} 

我不知道,你可以设定值只有部分组件,但让其他人默认接管。

+2

这正是我所要求的,我可以如何返回组件的默认值,我不想更改默认宽度。 – 2012-02-24 13:13:39

6

PickerView根据拾取器中有多少组件来划分组件。所以组件没有默认值。但你仍然可以试试这个。

为此,请尝试按百分比样式设置组件宽度。

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
    return 2 ; 
} 

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    if (component == 0) 
    { 
     return 10 ; 
    } 
    else 
    { 
     return 10 ; 
    } 
} 

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    if (component == 0) 
    { 
     return @"Apple" ; 
    } 
    else 
    { 
     return @"iPhone" ; 
    } 
} 

-(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component 
{ 
    if (component == 0) 
    { 
     return (self.view.frame.size.width * 55)/100 ; 
    } 
    else 
    { 
     return (self.view.frame.size.width * 30)/100 ; 
    } 
} 

下面是截图:

enter image description here

2

这是一个迟到的回答,但对于未来的读者,显然是没有办法返回一个“默认”的宽度。在你定义方法的那一刻,你必须明确地设置所有组件的宽度,而不仅仅是其中的一部分。