【问题标题】:UIButton setBackgroundImage and viewWillAppearUIButton setBackgroundImage 和 viewWillAppear
【发布时间】:2012-05-21 17:01:40
【问题描述】:

好吧,伙计们,我遇到了 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) 是一个存储变量,所以每次我关闭应用程序然后再打开时,应用程序已经知道它是否应该播放音乐。这也工作正常。

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

-(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 停止改变按钮背景。这可能很愚蠢,但我无法弄清楚我做错了什么......

【问题讨论】:

    标签: uibutton viewwillappear


    【解决方案1】:

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

    [botaoMusic setImage:...];
    

    而在按钮按下时你调用

    [botaoMusic setBackgroundImage:...];
    

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

    【讨论】:

      猜你喜欢
      • 2013-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多