проблема сохранения бул - PullRequest
       16

проблема сохранения бул

0 голосов
/ 08 апреля 2011

Отредактировано

У меня в приложении есть звук, который начинает воспроизводиться при запуске приложения.Кроме того, у меня есть два способа воспроизведения и остановки звука:

-(void)playBgMusic {

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


 -(void)stopMusic {

[theAudio stop];
[defaults setBool:YES forKey:@"isQuiet"]; }

Теперь у меня есть разные viewControllers и в моем mainView есть кнопка, которая останавливает / запускает музыку (зависит от того, играет ли музыкаили нет).

Итак, у меня есть:

-(IBAction)check {

isquiet = [defaults boolForKey:@"isQuiet"];

if (isquiet == YES) {

    [self playBgMusic];

    // Change button to indicate music is playing

} 

else {

    [self stopMusic];

    // Change the button to indicate music has stopped...
}

}

Теперь есть проблема.Звук воспроизводится при запуске приложения, после этого я могу нажать кнопку, и звук останавливается, но затем я не могу запустить его снова.Я поместил NSLogs в код и увидел, что BOOL все еще НЕТ после нажатия кнопки Stop.

Где моя ошибка?

Ответы [ 2 ]

0 голосов
/ 08 апреля 2011

Вы на правильном пути, единственное, чего не хватает, это на самом деле сохранить значение bool обратно в NSUserDefaults при запуске / остановке воспроизведения, поэтому каждый раз, когда вы нажимаете кнопку и читаете ее, вы получаете правильное значение.

Попробуйте и посмотрите, поможет ли это:

-(IBAction)check 
{
    BOOL isQuiet = [userDefaults boolForKey:@"isQuiet"];
    if (isQuiet)
    {
        [self playBgMusic];
        // Change button to indicate music is playing
    } else {
        [self stopBgMusic];
        // Change the button to indicate music has stopped...
    }
}

Затем в вашем методе playBgMusic добавьте следующее:

[userDefaults setBool:NO forKey:@"isQuiet"];

И в вашем spotBgMusic методе добавьте следующее:

[userDefaults setBool:YES forKey:@"isQuiet"];
0 голосов
/ 08 апреля 2011

Строго говоря, это не ответ, но, надеюсь, он укажет вам правильный путь ...

Добавьте некоторое ведение журнала (либо через NSLog(...), либо добавьте точки прерывания ведения журнала) к случаям NO и YES приведенного выше кода, который выводит значение isquiet. Затем вы можете увидеть, какие пути кода вызываются при нажатии кнопки в различных сценариях.

...