一個好辦法做到這一點是節約用是否在NSUserDefaults
播放聲音,這樣設置是由您的應用程序記住。設置即通過
BOOL shouldMuteSound = ...//set it corresponding to your button presses/visibility
[[NSUserDefaults standardUserDefaults] setBool:shouldMuteSound forKey:@"shouldMuteSound"];
//call this to immediatly update the userDefaults
[[NSUserDefaults standardUserDefaults] synchronize];
,並通過
BOOL shouldMuteSound = [[NSUserDefaults standardUserDefaults] boolForKey:@"shouldMuteSound"];
加載它,我起先不明白的是,按鈕是播放的聲音相同的viewController內。該代碼可以幫助您:
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
BOOL shouldMuteSound = [[NSUserDefaults standardUserDefaults] boolForKey:@"shouldMuteSound"];
if(!shouldMuteSound){
[self playSound];
}else{
[self stopSound];
}
}
- (void)playSound{
if(!sound){
NSString *path = [[NSBundle mainBundle] pathForResource:@"Main Menu" ofType:@"mp3"];
sound = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
sound.numberOfLoops = -1;
}
if (![sound isPlaying]){
[sound play];
}
[soundButton setBackgroundImage:[UIImage imageNamed:@"SoundOn.png"] forState:UIControlStateNormal];
}
- (void)stopSound{
[sound pause];
[soundButton setBackgroundImage:[UIImage imageNamed:@"SoundOff.png"] forState:UIControlStateNormal];
}
- (IBAction)soundButtonTapped{
BOOL shouldMuteSound = [[NSUserDefaults standardUserDefaults] boolForKey:@"shouldMuteSound"];
shouldMuteSound = !shouldMuteSound;
[[NSUserDefaults standardUserDefaults] setBool:shouldMuteSound forKey:@"shouldMuteSound"];
[[NSUserDefaults standardUserDefaults] synchronize];
if(shouldMuteSound){
[self stopSound];
}else{
[self playSound];
}
}
您的代碼在哪裏? –
請張貼一些代碼。我的猜測是你要麼開始音樂'viewDidAppear',要麼當你「切換」視圖控制器時卸載你的視圖,所以'viewDidLoad'被再次調用,並且音樂開始播放。 – michaelsnowden
我編輯了我的帖子,我在viewDidLoad中調用它。 – user3839056