Have you tried setting image for each segment based on its segment index? For example, lets say you have three segments in the segmentedControl and want to set three different images for segments. You may do like:
[self.mySegmentedControl setImage:[UIImage imageNamed:@"MYIMAGE1.PNG" forSegmentAtIndex:0];
[self.mySegmentedControl setImage:[UIImage imageNamed:@"MYIMAGE2.PNG" forSegmentAtIndex:1];
[self.mySegmentedControl setImage:[UIImage imageNamed:@"MYIMAGE3.PNG" forSegmentAtIndex:2];
And when you want to change the image on value changed, you can create a method that handles UIControlValueChanged
of your segmentedControl. Like this:
-(void)valueDidChange
{
switch ([self.mySegmentedControl selectedSegmentIndex]) {
case 0:
[self.mySegmentedControl setImage:[UIImage imageNamed:@"SOME_OTHERIMAGE"] forSegmentAtIndex:0];
break;
case 1:
[self.mySegmentedControl setImage:[UIImage imageNamed:@"SOME_OTHERIMAGE"] forSegmentAtIndex:1];
break;
case 2:
[self.mySegmentedControl setImage:[UIImage imageNamed:@"SOME_OTHERIMAGE"] forSegmentAtIndex:2];
break;
default:
break;
}
}
EDIT: And in your viewDidLoad
, you can set an action to your UISegmentedControl
to respond to the method added. Like this,
[self.mySegmentedControl addTarget:self action:@selector(valueDidChange) forControlEvents:UIControlEventValueChanged];