2012-05-21 2 views
0

Хорошо, ребята, у меня проблема с UIButton, может быть, это просто решить. У меня есть кнопка с IBAction toggleMusic, которая меняет фоновое изображение.UIButton setBackgroundImage и viewWillAppear

-(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 перестает изменять фон кнопки, когда я нажмите кнопку , Это может быть что-то глупо, но я не могу понять, что I'm делаю неправильно ...

ответ

1

Единственное, что я заметил в viewWillAppear вы звоните

[botaoMusic setImage:...]; 

, тогда как в нажатии кнопки, которую вы называете

[botaoMusic setBackgroundImage:...]; 

Вполне вероятно, что она по-прежнему функционирует, только изменяя фоновое изображение ПОЗАДИ верхнего изображения то, что было загружено, когда вид появляется

+0

ТНХ Вот именно! задача решена – user1347271

Смежные вопросы