0

2 つのピッカーを含むビューが...viewForRow...あり、ピッカー内に表示されるテキストのフォントを変更するために使用しています。ただし、ピッカーの 1 つが空に見えますが、ピッカーをスクロールすると、指定された textFields に値が表示されます。もう一方のピッカーは問題なく表示されます。ピッカーの 1 つが空に見えるのはなぜですか?

空に見えるピッカーには 2 つのコンポーネントがあることに注意してください。これはクレジット カードの有効期限ピッカーなので、月と年にそれぞれ 1 つのコンポーネントがあります。

...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;
}

どんなヒントでも大歓迎です。

4

1 に答える 1

0

理解した。ピッカーには 2 つのコンポーネントがあり、「pickerLabel」で作成したラベルが 2 つのコンポーネントのピッカーには大きすぎるためです。そのため、CGRect の幅を 2 ​​分割する必要がありましたが、うまくいきました。

于 2013-08-23T22:35:20.590 に答える