UIButton disable and enable background image

My application consists of several buttons, when the user touches one of them, a shadow appears under them, and the other buttons should not have any background image, I need something like Instagram application effects, here is my code, but my problem is When I touched another button, the shadow does not appear.

#define BGB [btn setBackgroundImage:[UIImage imageNamed:@"shadow.png"] forState:UIControlStateNormal]
#define _BGB [btn setBackgroundImage:nil forState:UIControlStateNormal]

- (IBAction)effectsPerform:(id)sender {

    UIButton *btn = (UIButton *)sender;

    if (btn == EB0) { BGB; } else {  _BGB; }
    if (btn == EB1) { BGB; } else {  _BGB; }
    if (btn == EB2) { BGB; } else {  _BGB; }

    //and other buttons ...
}
+3
source share
1 answer

Try as follows:

-(void)changeButton:(UIButton *)button background:(UIImage *)image
{
    [button setBackgroundImage:image forState:UIControlStateNormal];
}

- (IBAction)effectsPerform:(UIButton *)sender 
{
    [self changeButton:sender background:(sender == EB0 || sender == EB1 || sender == EB2) ? [UIImage imageNamed:@"shadow.png"] : nil];
}


UPDATE: You do this with a different approach in your viewDidLoad: method for each button that you can set:

[button setBackgroundImage:nil forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"shadow.png"] forState:UIControlStateSelected];

And then in -(IBAction)effectsPerform:

- (IBAction)effectsPerform:(UIButton *)sender 
{
    button1.isSelected = (sender == button1);
    button2.isSelected = (sender == button2);
    ....
}

... , . , , UIButton init, , ( , ) - .

0

All Articles