Reputation: 353
I'm trying to change the image button just in the moment that the button is pressed. When released, i want go back to the original.
I read some posts here, but it's not working.
Is it possible do it in the GUI without programming?
I tried this:
-(IBAction) toggleUIButtonImage:(id)sender{
if ([sender isSelected]) {
[sender setImage:unselectedImage forState:UIControlStateNormal];
[sender setSelected:NO];
}else {
[sender setImage:selectedImage forState:UIControlStateSelected];
[sender setSelected:YES];
}
}
But what kind of sender events should i associated the function toggleUIButtonImage ?
Thanks
Upvotes: 4
Views: 7597
Reputation: 684
You can do it in interface builder by giving different settings to each button state config:
Or you can also change the 'settings' of the button in code by using 'UIButton' setImage:forState method.
[myButton setImage:highlightedImage forState:UIControlStateHighlighted];
Usually, you should do it by 'configuring' the button as described above and not by changing the sub views of the button manually as a response to user interaction. The reason it doesn't work for you is the inherent hidden behaviour of UIButton. You manually make the change of a subview of the button as a response to user interaction, but your change is changed back to what was defined in the settings of your button (according to the button's state). So it seems like your code doesn't do anything at all.
Upvotes: 12
Reputation: 6524
in the ViewDidLoad
Method
set the property of
[[button setImage:[UIImage ImageNamed:@"unselectedImage.png"] forState: UIControlStateNormal];
[[button setImage:[UIImage ImageNamed:@"selectedImage.png"] forState: UIControlStateHighlighted ];
Upvotes: 4
Reputation: 110
This can be done with Interface Builder, no code necessary.
Select your button in IB, go to the right sidebar, change the Type to Custom, make sure State Config is Default, and type in the name of your "regular image" reference in the Background Image text field.
Then change State Config to Highlighted, and type in the name of your "pressed image" reference in the Background Image text field.
Upvotes: 2
Reputation: 10788
In IB, you can set the image for the Highlighted (not Selected) state of the button. That should do it.
Look in the Button section of the Utilities pane, and select Highlighted from the State Config drop-down.
Upvotes: 1