Leo*_*eon 7 audio boolean objective-c nsuserdefaults ios4
当我的应用程序开始播放音乐时:
-(void)playBgMusic {
NSString *path = [[NSBundle mainBundle] pathForResource:@"bgmusic" ofType:@"aif"];
theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play]; }
Run Code Online (Sandbox Code Playgroud)
但他应该可以通过按下按钮关闭音乐,如果他再次按下按钮,音乐应该再次打开.我有:
-(IBAction)check {
if (isquiet == NO) {
[theAudio stop];
isquiet = YES;
defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:YES forKey:@"stringKey"];
}
else {
[self playBgMusic];
isquiet = NO;
defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:NO forKey:@"stringKey"]; } }
Run Code Online (Sandbox Code Playgroud)
我想我没弄明白.现在它可以在我的第一个ViewController中工作,我可以打开和关闭音乐但是当我在播放音乐时转到另一个viewController,然后再返回并按下按钮,音乐不会停止,当我按下它多次音乐第二次播放并重叠.
还有什么问题?
Rog*_*Rog 36
无需将其包装在NSNumber中,有一些方便的方法:
要设置BOOL,请使用:
[userDefaults setBool:YESorNO forKey:@"yourKey"];
Run Code Online (Sandbox Code Playgroud)
要访问它,请使用:
[userDefaults boolForKey:@"yourKey"];
Run Code Online (Sandbox Code Playgroud)
[编辑以回答您的其他问题]
不确定为什么使用NSUserDefaults - 你似乎没有必要实现的目标?这是我为一个可以开始/停止音乐的按钮做的事情:
-(IBAction)check
{
if (isQuiet)
{
// Play music
// Change the button to indicate it is playing...
} else
{
// Stop music
// Change the button to indicate it has stopped...
}
// Set your isQuiet to be the opposite of what it was when the button was clicked
isQuiet = !isQuiet;
}
Run Code Online (Sandbox Code Playgroud)
将您的BOOL值填入NSNumber对象并将其添加到NSUserDefault:
NSUserDefaults *boolUserDefaults = [NSUserDefaults standardUserDefaults];
[boolUserDefaults setObject:[NSNumber numberWithBool:isquiet]
forKey:@"stringKey"];
Run Code Online (Sandbox Code Playgroud)
稍后您将能够使用-boolForKey:函数将该值检索为纯BOOLNSUserDefaults
| 归档时间: |
|
| 查看次数: |
13833 次 |
| 最近记录: |