UIButton setBackgroundImage和viewWillAppear

时间:2012-05-21 17:01:41

标签: uibutton viewwillappear

好的,我遇到了UIButton的问题,也许这很容易解决。我有一个带有IBAction toggleMusic的按钮,用于更改背景图像。

-(IBAction)toggleMusic{
    if (gameAppDelegate.playMusic) {
        gameAppDelegate.playMusic = NO;
        [menuAudioPlayer stop];
        [botaoMusic setBackgroundImage:[UIImage imageNamed:@"bt_sound_off.png"] forState:UIControlStateNormal];
        [SoundManager playSoundFile:@"botao3" Format:@"wav" InLoop:NO];

    }
    else {
        gameAppDelegate.playMusic = YES;
        [menuAudioPlayer play];
        [botaoMusic setBackgroundImage:[UIImage imageNamed:@"bt_sound_on.png"] forState:UIControlStateNormal];
        [SoundManager playSoundFile:@"botao3" Format:@"wav" InLoop:NO];

    }
}

这很好用。 playmusic(bool)是一个存储变量,因此每当我关闭应用程序然后再打开时,应用程序就已经知道它是否应该播放音乐。这也很好。

问题是,我想在应用程序打开后立即设置正确的背景图像(音乐开/关)(不仅在我点击按钮时)。所以我把以下代码放在视图上会出现:

-(void)viewWillAppear:(BOOL)animated{
    if(gameAppDelegate.playMusic)
        [botaoMusic setImage:[UIImage imageNamed:@"bt_sound_on.png"] forState:UIControlStateNormal];
    else
        [botaoMusic setImage:[UIImage imageNamed:@"bt_sound_off.png"] forState:UIControlStateNormal];


}

当我介绍此代码时,应用程序在视图出现时成功识别出正确的背景图像,但当我触摸按钮时,togglemusic停止改变按钮背景。这可能是愚蠢的,但我无法弄清楚我做错了什么......

1 个答案:

答案 0 :(得分:1)

我注意到的一件事就是viewWillAppear你打电话

[botaoMusic setImage:...];

然后在按钮中按下

[botaoMusic setBackgroundImage:...];

它可能仍在运作,只是在视图出现时更改背景图像后面的任何内容的顶部图像