1

UIPickerView をカスタマイズしようとしていますが、ほとんど機能しています。ただし、背景色の設定は最初のコンポーネント (つまり、最初の列) でのみ機能します。他の 2 つの列には影響を与えないようです。問題は PickerView のコンポーネントのロード順序にある​​と思いますが、よくわかりません。どんな助けでも大歓迎です。

#pragma mark PickerView DataSource

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    //[(UIView*)[[_picker subviews] objectAtIndex:0] setAlpha:0.1f];
    return 3;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{

        [self setColors];

    NSLog(@"number of components %d",[pickerView numberOfComponents]);
        if(component == 0)

    {
        //use Array1
        [self setColors];
        return [_pickerArray count];


    }

    else if (component==1)

    {
        [self setColors];
        NSLog(@"component 1");
        return [_pickerArray count];

    } else if (component==2) {
        NSLog(@"component 2");
        [self setColors];
        return [_pickerArray count];
    } else {

        return 3;
    }


}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{

        if(component == 0)

        {

            //use Array1
            return [_pickerArray objectAtIndex:row];


        }

        else 

        {

            //use Array2
            return [_pickerArrayTwo objectAtIndex:row];

        }
    }
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {

    [self setColors];
    UILabel *label= [[UILabel alloc] initWithFrame:CGRectMake(0.0, -130.0, 60.0, 60.0)];
    [label setBackgroundColor:[UIColor redColor]];
    [label setTextColor:[UIColor blueColor]];
    [label setFont:[UIFont boldSystemFontOfSize:40.0]];
    [label setText:[NSString stringWithFormat:@"%d",row]];
    label.backgroundColor = [UIColor clearColor];
    return label;
}
-(void)setColors
{
    [(UIView*)[[_picker  subviews] objectAtIndex:0] setAlpha:0.0f];

    [(UIView*)[[_picker subviews] objectAtIndex:1] setAlpha:0.0f];
    [(UIView*)[[_picker subviews] objectAtIndex:2] setAlpha:0.0f];
    [(UIView*)[[_picker subviews] objectAtIndex:3] setAlpha:0.0f];
    // [(UIView*)[[_picker subviews] objectAtIndex:4] setAlpha:0.0f];
    [(UIView*)[[_picker subviews] objectAtIndex:0] setHidden:YES];

    // [(UIView*)[[_picker  subviews] objectAtIndex:2] setAlpha:0.5f];
    // NSLog(@"%@",[_picker subviews]);
    _picker.backgroundColor = [UIColor clearColor];

}

助けてくれてありがとう。

4

1 に答える 1

0

Ok。UIPickerView のカスタマイズも試みましたが、失敗しました。代わりに、 https://github.com/arkichek/AFPickerViewにあるカスタムピッカービュー AFPickerView になりましたか?

カスタム ピッカービューの優れたライブラリです。

于 2013-01-03T13:46:24.590 に答える