AVAudio не остановится после представления модального представления
-
29-10-2019 - |
Вопрос
У меня есть приложение, которое отображает фильмы.На первом экране показаны кнопки, которые представляют различные модальные представления.Внутри этих модальных представлений находятся кнопки, которые воспроизводят видео.
Я хочу, чтобы главное меню воспроизводило музыку (достаточно просто), но я хочу, чтобы оно сохранялось во втором модальном представлении, но останавливалось, когда начинается воспроизведение видео.
Я пробовал [Остановка аудиопроигрывателя] при нажатии кнопок для просмотра фильмов, но музыка продолжает играть.
Я пробовал останавливать и воспроизводить звук в 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.Вот основные шаги для вашей ситуации:
- В вашем главном меню регистрируются уведомления, когда оно будет готово.
- В вашем главном меню есть методы, которые можно вызывать при появлении уведомлений.
- Ваше подменю запускает метод, когда ему нужно отключить звук.
- Ваше главное меню отменяет регистрацию, когда оно будет готово к закрытию.
Надеюсь, это поможет!