UIPickerView显示为空

时间:2013-08-23 19:06:26

标签: ios uipickerview

我有两个选择器的视图,我使用...viewForRow...来修改选择器内显示的文本的字体。但是,我的一个选择器显示为空,但如果我滚动选择器,则值将显示在其指定的textFields中。另一个选择器看起来非常好。我想知道为什么其中一个选择器显得空了?

请注意,显示为空的选择器有两个组件。这是一张信用卡到期日期选择器,因此每个月有一个组件,一年有一个组件。

以下是...viewForRow...方法的代码:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
    UILabel *pickerLabel = (UILabel *)view;

    if (pickerLabel == nil)
    {
        //label size
        CGRect frame = CGRectMake(0.0, 0.0, 280, 30);

        pickerLabel = [[UILabel alloc] initWithFrame:frame];
        [pickerLabel setTextAlignment:UITextAlignmentLeft];
        [pickerLabel setBackgroundColor:[UIColor clearColor]];

        [pickerLabel setFont:[UIFont fontWithName:@"Helvetica" size:11.0]];
    }

    if ([pickerView isEqual:pickerExpiration])
    {
        if (component == 0)
        {
            [pickerLabel setText:[NSString stringWithFormat:@"%@", [monthsList objectAtIndex:row]]];
        }
        [pickerLabel setText:[NSString stringWithFormat:@"%@", [yearsList objectAtIndex:row]]];

        return pickerLabel;
    }

    billingAddress = [addresses objectAtIndex:row];
    [pickerLabel setText:[NSString stringWithFormat:@"%@ %@", billingAddress.addressName, billingAddress.fullAddressText]];
    return pickerLabel;
}

任何提示都将不胜感激。

1 个答案:

答案 0 :(得分:0)

想出来。这是因为,拾取器有两个组件,而我通过'pickerLabel'制作的标签对于双组件选择器来说太大了。所以,我不得不将CGRect的宽度分成两部分,并且它有效。