Pregunta

Tengo una aplicación que muestra películas.La primera pantalla muestra botones que presentan diferentes vistas modales.Dentro de esas vistas modales hay botones que reproducen videos.

Quiero que el menú principal reproduzca música (bastante fácil), pero quiero que persista en la segunda vista modal pero que se detenga cuando comience a reproducirse el video.

Intenté [detener audioPlayer] cuando se presionan los botones de las películas, pero la música continúa reproduciéndose.

Intenté detener y reproducir el audio en viewDidAppear y viewDidDisappear.Eso hizo que el audio se reiniciara al presentar la segunda vista y no se reprodujera durante el video.

Espero que esto tenga sentido, realmente solo necesito una idea de cómo hacer que el audio se reproduzca todo el tiempo (en dos o tres vistas modales), excepto durante la reproducción de la película.

Aquí está mi vewDidAppear método:

-(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]
   }
}
¿Fue útil?

Solución

Su controlador de vista modal está intentando detener un audioPlayer que no existe dentro de él.El mainMenueViewController tiene el audioPlayer, entonces él tiene que ser el que le diga al reproductor de audio que se detenga.

Puede utilizar NSNotifications para esto.Cada NSNotificación se envía a través del singleton NSNotificaciónCentro.Estos son los pasos básicos para su situación:

  1. Su menú principal se registra para recibir notificaciones cuando esté listo.
  2. Su menú principal tiene métodos para llamar cuando se activan las notificaciones.
  3. Su submenú activa un método cuando necesita apagar el audio.
  4. Su menú principal se cancela cuando está listo para cerrarse.

¡Espero que esto ayude!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top