Search code examples
iphoneiosxcodexcode4

how to change a UIButton's background using a alert


i am currently developing an app that uses an UIAlertview to change buttons images. i have tried this but it does not seem to be working! please help in this matter! Rafee

- (IBAction)changebackground:(id)sender {
    UIAlertView *alert = [[UIAlertView alloc] 

                      initWithTitle:@"The Title" 
                      message:@"The Message" 
                      delegate:self 
                      cancelButtonTitle:@"Cancel" 
                      otherButtonTitles:@"normal",@"for girly girls",@"for boys!", nil];

[alert show];
}

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {

if (buttonIndex == 1) {

    UIImage *img = [UIImage imageNamed:@"img1.jpg"];

    [background setImage:img];

    UIImage *buttonImage = [UIImage imageNamed:@"black sharp.png"];
    [asharp setImage:buttonImage forState:UIControlStateNormal];
    [self.view addSubview:asharp];
    UIImage *buttonImage2 = [UIImage imageNamed:@"black sharp.png"];
    [csharp setImage:buttonImage2 forState:UIControlStateNormal];
    [self.view addSubview:csharp];
    UIImage *buttonImage3 = [UIImage imageNamed:@"black sharp.png"];
    [dsharp setImage:buttonImage3 forState:UIControlStateNormal];
    [self.view addSubview:dsharp];
    UIImage *buttonImage4 = [UIImage imageNamed:@"black sharp.png"];
    [fsharp setImage:buttonImage4 forState:UIControlStateNormal];
    [self.view addSubview:fsharp];
    UIImage *buttonImage5 = [UIImage imageNamed:@"black sharp.png"];
    [gsharp setImage:buttonImage5 forState:UIControlStateNormal];
    [self.view addSubview:gsharp];
    UIImage *buttonImage6 = [UIImage imageNamed:@"white key.png"];
    [middlec setImage:buttonImage6 forState:UIControlStateNormal];
    [self.view addSubview:middlec];
    UIImage *buttonImage7 = [UIImage imageNamed:@"white key.png"];
    [d setImage:buttonImage7 forState:UIControlStateNormal];
    [self.view addSubview:d];
    UIImage *buttonImage8 = [UIImage imageNamed:@"white key.png"];
    [en setImage:buttonImage8 forState:UIControlStateNormal];
    [self.view addSubview:en];
    UIImage *buttonImage9 = [UIImage imageNamed:@"white key.png"];
    [f setImage:buttonImage9 forState:UIControlStateNormal];
    [self.view addSubview:f];
    UIImage *buttonImage10 = [UIImage imageNamed:@"white key.png"];
    [g setImage:buttonImage10 forState:UIControlStateNormal];
    [self.view addSubview:g];
    UIImage *buttonImage11 = [UIImage imageNamed:@"white key.png"];
    [a setImage:buttonImage11 forState:UIControlStateNormal];
    [self.view addSubview:a];
    UIImage *buttonImage12 = [UIImage imageNamed:@"white key.png"];
    [b setImage:buttonImage12 forState:UIControlStateNormal];
    [self.view addSubview:b];


}

if (buttonIndex == 2) {

    UIImage *img = [UIImage imageNamed:@"img2.jpg"];

    [background setImage:img];

    UIImage *buttonImage = [UIImage imageNamed:@"green sharp.png"];
    [asharp setImage:buttonImage forState:UIControlStateNormal];
    [self.view addSubview:asharp];
    UIImage *buttonImage2 = [UIImage imageNamed:@"green sharp.png"];
    [csharp setImage:buttonImage2 forState:UIControlStateNormal];
    [self.view addSubview:csharp];
    UIImage *buttonImage3 = [UIImage imageNamed:@"green sharp.png"];
    [dsharp setImage:buttonImage3 forState:UIControlStateNormal];
    [self.view addSubview:dsharp];
    UIImage *buttonImage4 = [UIImage imageNamed:@"green sharp.png"];
    [fsharp setImage:buttonImage4 forState:UIControlStateNormal];
    [self.view addSubview:fsharp];
    UIImage *buttonImage5 = [UIImage imageNamed:@"green sharp.png"];
    [gsharp setImage:buttonImage5 forState:UIControlStateNormal];
    [self.view addSubview:gsharp];
    UIImage *buttonImage6 = [UIImage imageNamed:@"pink key.png"];
    [middlec setImage:buttonImage6 forState:UIControlStateNormal];
    [self.view addSubview:middlec];
    UIImage *buttonImage7 = [UIImage imageNamed:@"pink key.png"];
    [d setImage:buttonImage7 forState:UIControlStateNormal];
    [self.view addSubview:d];
    UIImage *buttonImage8 = [UIImage imageNamed:@"pink key.png"];
    [en setImage:buttonImage8 forState:UIControlStateNormal];
    [self.view addSubview:en];
    UIImage *buttonImage9 = [UIImage imageNamed:@"pink key.png"];
    [f setImage:buttonImage9 forState:UIControlStateNormal];
    [self.view addSubview:f];
    UIImage *buttonImage10 = [UIImage imageNamed:@"pink key.png"];
    [g setImage:buttonImage10 forState:UIControlStateNormal];
    [self.view addSubview:g];
    UIImage *buttonImage11 = [UIImage imageNamed:@"pink key.png"];
    [a setImage:buttonImage11 forState:UIControlStateNormal];
    [self.view addSubview:a];
    UIImage *buttonImage12 = [UIImage imageNamed:@"pink key.png"];
    [b setImage:buttonImage12 forState:UIControlStateNormal];
    [self.view addSubview:b];
}

if (buttonIndex == 3) {

    UIImage *img = [UIImage imageNamed:@"img3.jpg"];

    [background setImage:img];

    UIImage *buttonImage = [UIImage imageNamed:@"orange sharp.png"];
    [asharp setImage:buttonImage forState:UIControlStateNormal];
    [self.view addSubview:asharp];
    UIImage *buttonImage2 = [UIImage imageNamed:@"orange sharp.png"];
    [csharp setImage:buttonImage2 forState:UIControlStateNormal];
    [self.view addSubview:csharp];
    UIImage *buttonImage3 = [UIImage imageNamed:@"orange sharp.png"];
    [dsharp setImage:buttonImage3 forState:UIControlStateNormal];
    [self.view addSubview:dsharp];
    UIImage *buttonImage4 = [UIImage imageNamed:@"orange sharp.png"];
    [fsharp setImage:buttonImage4 forState:UIControlStateNormal];
    [self.view addSubview:fsharp];
    UIImage *buttonImage5 = [UIImage imageNamed:@"orange sharp.png"];
    [gsharp setImage:buttonImage5 forState:UIControlStateNormal];
    [self.view addSubview:gsharp];
    UIImage *buttonImage6 = [UIImage imageNamed:@"silver key.png"];
    [middlec setImage:buttonImage6 forState:UIControlStateNormal];
    [self.view addSubview:middlec];
    UIImage *buttonImage7 = [UIImage imageNamed:@"silver key.png"];
    [d setImage:buttonImage7 forState:UIControlStateNormal];
    [self.view addSubview:d];
    UIImage *buttonImage8 = [UIImage imageNamed:@"silver key.png"];
    [en setImage:buttonImage8 forState:UIControlStateNormal];
    [self.view addSubview:en];
    UIImage *buttonImage9 = [UIImage imageNamed:@"silver key.png"];
    [f setImage:buttonImage9 forState:UIControlStateNormal];
    [self.view addSubview:f];
    UIImage *buttonImage10 = [UIImage imageNamed:@"silver key.png"];
    [g setImage:buttonImage10 forState:UIControlStateNormal];
    [self.view addSubview:g];
    UIImage *buttonImage11 = [UIImage imageNamed:@"silver key.png"];
    [a setImage:buttonImage11 forState:UIControlStateNormal];
    [self.view addSubview:a];
    UIImage *buttonImage12 = [UIImage imageNamed:@"silver key.png"];
    [b setImage:buttonImage12 forState:UIControlStateNormal];
    [self.view addSubview:b];
}

}

Solution

  • I have just bumped into this one as well. Buttons cannot have their background changed unless they are custom. Otherwise, changing the background on a regular button is just like modifying the background of a UITableViewCell (the actual change happens when accessing contentView - but that's not the case with UIButton)

    So change your button type from interface build to Custom or initialize your button from code like this:

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];