AVAudio не остановится после представления модального вида - PullRequest
2 голосов
/ 23 марта 2011

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

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

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

Я попытался остановить и воспроизвести звук в 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]
   }
}

1 Ответ

1 голос
/ 23 марта 2011

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

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

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

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

...