AVAudio не остановится после представления модального представления

StackOverflow https://stackoverflow.com/questions/5406567

Вопрос

У меня есть приложение, которое отображает фильмы.На первом экране показаны кнопки, которые представляют различные модальные представления.Внутри этих модальных представлений находятся кнопки, которые воспроизводят видео.

Я хочу, чтобы главное меню воспроизводило музыку (достаточно просто), но я хочу, чтобы оно сохранялось во втором модальном представлении, но останавливалось, когда начинается воспроизведение видео.

Я пробовал [Остановка аудиопроигрывателя] при нажатии кнопок для просмотра фильмов, но музыка продолжает играть.

Я пробовал останавливать и воспроизводить звук в viewDidAppear и viewDidDisappear.Это привело к перезапуску звука при представлении второго просмотра и прекращению воспроизведения во время видео.

Я надеюсь, что это имеет смысл, мне действительно просто нужно представление о том, как заставить звук воспроизводиться постоянно (в течение двух или трех модальных просмотров), за исключением воспроизведения фильма.

Вот мой vewDidAppear способ:

-(void)viewDidAppear:(BOOL)animated {
   NSString *musicPath = [[NSBundle mainBundle] pathForResource: @"Intro Music" ofType:@"mp3"]; 
   if(musicPath) {
     NSURL *musicURL = [NSURL fileURLWithPath:musicPath];
     audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:musicURL error:nil];
     [musicURL release]; 
   }
   if(!audioPlayer.playing) {
     [audioPlayer play]
   }
}
Это было полезно?

Решение

Ваш контроллер модального представления пытается остановить audioPlayer который не существует внутри него.Тот Самый mainMenueViewController обладает audioPlayer, так что IT это должен быть тот, кто скажет аудиоплееру остановиться.

Для этого вы можете использовать NSNotifications .Каждый Уведомление о NSNotification отправляется через синглтон Центр идентификации NSNotification center.Вот основные шаги для вашей ситуации:

  1. В вашем главном меню регистрируются уведомления, когда оно будет готово.
  2. В вашем главном меню есть методы, которые можно вызывать при появлении уведомлений.
  3. Ваше подменю запускает метод, когда ему нужно отключить звук.
  4. Ваше главное меню отменяет регистрацию, когда оно будет готово к закрытию.

Надеюсь, это поможет!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top