2012-03-23 13 views
6

Durante el uso de mi aplicación, el usuario debería poder iniciar, detener y reenviar música de fondo. (A través de varios UIViewControllers). Para esto, hice mi MusicPlayer singleton (NSObject). Si creo los controles en cada vista por sí mismo funciona, pero lo que quiero es básicamente una vista que maneja la clase de reproductor de música y es presente todo el tiempo. El usuario también debe poder "ocultar" y "mostrar" la vista deslizándola hacia la izquierda o hacia la derecha. Entonces, si está oculto y cambio mi vista Controlador, también debe estar oculto en la nueva vista Controlador y la música no debe interrumpirse.¿Hace UIViewController un singleton?

¿Cuál es el mejor enfoque para llegar a esto?

Gracias

EDIT:

Bueno ... He intentado esto en mi controlador de vista de inicio y funciona:

UIView * playerView = [[UIView alloc] initWithFrame:CGRectMake(0, 300, self.view.bounds.size.width, 44)]; 
playerView.backgroundColor = [UIColor redColor]; 

[[[[UIApplication sharedApplication] delegate] window] addSubview:playerView]; 

Pero:

¿Es Hay una manera de hacer esto en ApplicationDelegate?

Respuesta

6

Si su MusicPlayer singleton está reproduciendo música, no debe interrumpirse cuando cambie la vista. Y en lugar de crear controles de música para cada controlador de vista, puede agregar la vista de controles de música como una subvista de la ventana y asegurarse de que se mantenga encima de todo lo demás.

Actualización: En su delegado aplicación, que normalmente tienen algo de código para configurar la vista principal (es decir, el método applicationDidFinishLaunching). Supongo que tienes un controlador primario de navegación o pestañas en el que haces todo lo demás. Entonces, después de agregar su vista a la ventana, cree y agregue su vista de controlador de reproductor de música y agréguela como una subvista de la ventana. Permanecerá en la parte superior siempre que no agregue otras vistas a la ventana (si lo hace, solo necesita mover los controles de música de nuevo a la parte superior).

Usaría un controlador de vista Singleton MusicPlayerController que posee la vista de controles del reproductor de música. De esta forma, otros controladores de vista pueden mostrar u ocultar fácilmente los controles.

+0

La música no se interrumpe. Esta parte funciona! ¿Podría editar su respuesta e ir más en detalle teniendo en cuenta la segunda parte de su respuesta? ¡Gracias hasta ahora! – DAS

+0

¿Cómo puedo mantener la vista al tanto de todo lo demás? No es visible? Pregunta actualizada – DAS

+0

Gracias, suena bien para probar. Pero, ¿cómo puedo agregar una vista a una clase singleton o crear un ViewController singleton? – DAS

0

Si utiliza un controlador de vista de contenedor (por ejemplo, UINavigationController), tiene todos los controles de vista cambiando entre sí, y en la parte superior del contenedor puede agregar los controles de MusicPlayer (la forma más fácil sería que tenga el el mismo padre que el controlador de navegación), de esa manera se crea solo una vez y no depende de qué vistas se muestran debajo de él.

0

Usted no puede: How to add button to UINavigationController

"Añadir UIbarButtonItem en el UIViewController no no en el UINavigationController El controlador de navegación muestra el elemento de navegación de la parte superior viewVontroller, no a sí mismo.".

Cuestiones relacionadas