I’m new in development and to do some stuff i write sometimes a really strange code.. For example, in this case, i’ve made a scrollview for showing an horizontal number list from 1 to 40. Each number is a button. I wan’t that when the user click on a number, the background image of this button change, and when he click on another one, the background of the new button also change (but the first button come back to his initial state). Like on a tab bar…
To do that i’ve made the same code 40 times (for each button) :
- (IBAction)Bouton1:(id)sender {
UIImage *buttonImageOn = [UIImage imageNamed:@"fond-footer-motif-rollover.png"];
UIImage *buttonImageOff = [UIImage imageNamed:@"fond-footer-motif.png"];
[sender setBackgroundImage:buttonImageOn forState:UIControlStateNormal];
[_button2 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button3 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button4 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button5 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button6 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button7 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button8 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button9 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button10 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button11 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button12 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button13 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button14 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button15 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button16 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button17 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button18 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button19 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button20 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button21 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button22 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button23 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button24 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button25 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button26 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button27 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button28 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button29 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button30 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button31 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button32 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button33 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button34 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button35 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button36 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button37 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button38 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button39 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button40 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
}
- (IBAction)Bouton2:(id)sender {
UIImage *buttonImageOn = [UIImage imageNamed:@"fond-footer-motif-rollover.png"];
UIImage *buttonImageOff = [UIImage imageNamed:@"fond-footer-motif.png"];
[sender setBackgroundImage:buttonImageOn forState:UIControlStateNormal];
[_button1 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
//[_button2 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button3 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button4 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button5 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button6 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button7 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button8 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button9 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button10 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button11 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button12 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button13 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button14 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button15 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button16 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button17 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button18 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button19 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button20 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button21 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button22 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button23 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button24 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button25 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button26 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button27 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button28 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button29 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button30 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button31 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button32 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button33 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button34 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button35 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button36 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button37 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button38 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button39 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
[_button40 setBackgroundImage:buttonImageOff forState:UIControlStateNormal];
}
So when i click on a button, it change all the others.. How can i write a better code?
First of all, you can connect all buttons to the same
IBAction, so you don’t need to write the action 40 times. To simplify it even more you could to sth. like this:You could connect all buttons to an
IBOutletCollectionlet’s say we call itallButtonswhich is anNSArrayan modify your code like this: