当我的应用开始播放音乐时:

-(void)playBgMusic {

NSString *path = [[NSBundle mainBundle] pathForResource:@"bgmusic" ofType:@"aif"];
theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];    }

但是如果他再次按下该按钮,则他应该能够通过按一下按钮来关闭音乐。我有:
-(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"]; } }

我想我没有。现在它可以在我的第一个ViewController中工作,可以打开和关闭音乐,但是当我在播放音乐时转到另一个viewController时,然后再次返回并按下按钮,音乐就不会停止,并且当我多次按下它时音乐会第二次播放并重叠。

还有什么问题?

最佳答案

无需将其包装在NSNumber中,为此有一些方便的方法:

要设置BOOL,请使用:

[userDefaults setBool:YESorNO forKey:@"yourKey"];

要访问它,请使用:
[userDefaults boolForKey:@"yourKey"];

[编辑以回答您的其他问题]

不知道为什么要使用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;
}

10-08 15:46