如何更改从pickerview中选择的颜色选择值?

发布于 2024-12-07 04:23:57 字数 1757 浏览 2 评论 0原文

pickerArray = [[NSArray arrayWithObjects:@"20", @"40", @"60",@"80", @"100", @"120", @"140", @"160", @"180", @"200",nil] retain];

 - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

        //On Selecting the component row
        if (component == 0) {

        } else if (component == 1) {

            [quantityPickerDelegate didChangeLabelText:[pickerArray objectAtIndex:row]];// delegate passing the selected value
             pickerLabel.textColor = [UIColor colorWithRed:0.0745 green:0.357 blue:1.0 alpha:1];

    }   


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

    //Picker view content added
    pickerLabel = [[UILabel alloc] init];
    pickerLabel.backgroundColor=[UIColor clearColor];

    if (component == 0)
    {
        [pickerLabel setText:@"Total"];
        pickerLabel.frame = CGRectMake(0.0, 200,220,44);
        pickerLabel.textColor = [UIColor colorWithRed:0.0745 green:0.357 blue:1.0 alpha:1];
    }

    else
    {
        pickerLabel = [[UILabel alloc] init];
        pickerLabel.backgroundColor=[UIColor clearColor];
        pickerLabel.frame = CGRectMake(0.0, 200,70,44);
        [pickerLabel setText:[pickerArray objectAtIndex:row]];
        pickerLabel.textColor = [UIColor blackColor];
    }

    [pickerLabel setTextAlignment:UITextAlignmentCenter];
    pickerLabel.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:20];
    pickerLabel.font = [UIFont boldSystemFontOfSize:20];

    //return [pickerLabel autorelease];

    return pickerLabel;
}

我正在尝试更改从 UIPickerView 中选择的选取值颜色

我正在尝试更改它,但它并没有完全影响它更改低于所选值的其他值。

pickerArray = [[NSArray arrayWithObjects:@"20", @"40", @"60",@"80", @"100", @"120", @"140", @"160", @"180", @"200",nil] retain];

 - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

        //On Selecting the component row
        if (component == 0) {

        } else if (component == 1) {

            [quantityPickerDelegate didChangeLabelText:[pickerArray objectAtIndex:row]];// delegate passing the selected value
             pickerLabel.textColor = [UIColor colorWithRed:0.0745 green:0.357 blue:1.0 alpha:1];

    }   


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

    //Picker view content added
    pickerLabel = [[UILabel alloc] init];
    pickerLabel.backgroundColor=[UIColor clearColor];

    if (component == 0)
    {
        [pickerLabel setText:@"Total"];
        pickerLabel.frame = CGRectMake(0.0, 200,220,44);
        pickerLabel.textColor = [UIColor colorWithRed:0.0745 green:0.357 blue:1.0 alpha:1];
    }

    else
    {
        pickerLabel = [[UILabel alloc] init];
        pickerLabel.backgroundColor=[UIColor clearColor];
        pickerLabel.frame = CGRectMake(0.0, 200,70,44);
        [pickerLabel setText:[pickerArray objectAtIndex:row]];
        pickerLabel.textColor = [UIColor blackColor];
    }

    [pickerLabel setTextAlignment:UITextAlignmentCenter];
    pickerLabel.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:20];
    pickerLabel.font = [UIFont boldSystemFontOfSize:20];

    //return [pickerLabel autorelease];

    return pickerLabel;
}

I am trying to change the selected Picked Value Color from UIPickerView

I am trying to change it but its not effected perfectly its changing other values below the selected value.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱给你人给你 2024-12-14 04:23:57

这是不正确的。您应该重新加载选定的组件。然后,您需要获取所选行并在 viewForRow:forComponent: 中更新其颜色。像这样的东西——

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

        //On Selecting the component row
        if (component == 0) {

        } else if (component == 1) {

            [quantityPickerDelegate didChangeLabelText:[pickerArray objectAtIndex:row]];// delegate passing the selected value
            [pickerView reloadComponent:component]; //This will cause your viewForComp to hit
        }
    }

- (UIView *)viewForRow:(NSInteger)row forComponent:(NSInteger)component
{
     //...
     //Your usual code
      pickerLabel.textColor = defaultColor;

     if([self.pickerView selectedRowInComponent:component] == row) //this is the selected one, change its color
     {
            pickerLabel.textColor = [UIColor colorWithRed:0.0745 green:0.357 blue:1.0 alpha:1];
     } 
}

This is incorrect. You should reload the selected component. Then you need to fetch the selected row and update its color in viewForRow:forComponent:. Something like-

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

        //On Selecting the component row
        if (component == 0) {

        } else if (component == 1) {

            [quantityPickerDelegate didChangeLabelText:[pickerArray objectAtIndex:row]];// delegate passing the selected value
            [pickerView reloadComponent:component]; //This will cause your viewForComp to hit
        }
    }

- (UIView *)viewForRow:(NSInteger)row forComponent:(NSInteger)component
{
     //...
     //Your usual code
      pickerLabel.textColor = defaultColor;

     if([self.pickerView selectedRowInComponent:component] == row) //this is the selected one, change its color
     {
            pickerLabel.textColor = [UIColor colorWithRed:0.0745 green:0.357 blue:1.0 alpha:1];
     } 
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文