How to change selected color Selected value from pickerview?

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 color of a highlighted color with a UIPickerView

I am trying to change it, but it did not completely change other values โ€‹โ€‹below the selected value.

+3
source share
1 answer

This is not true. You must reload the selected component. Then you need to select the selected row and update its color in viewForRow:forComponent: Sort of -

 - (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]; } } 

NTN

Akshay

+5
source

Source: https://habr.com/ru/post/1480065/


All Articles