2009-07-17 6 views
0

J'ai un AVAudioPlayer, appelons-le player1, qui commence dans un UIViewController particulier, appelons-le MyController1. J'ai mis numberOfLoops à -1 de sorte que les boucles audio indéfiniment. J'ai mis en place un protocole pour que myController1 agisse en tant que délégué pour AVAudioPlayer, afin que je puisse déclencher audioPlayerDidFinishPlaying. J'ai également écrit une routine pour arrêter le joueur depuis myController1. Tout cela fonctionne.Arrêt AVAudioPlayer partout dans l'application

Supposons que j'ai UIViewControllers supplémentaires, par exemple, myController2 et myController3. J'ai peigné les forums et la documentation d'Apple, mais je n'arrive pas à trouver un moyen d'arrêter le lecteur à l'intérieur de ces contrôleurs supplémentaires. C'est possible? (Je suis réticent à croire que ce n'est pas le cas.) Si oui, puis-je avoir des indices?

Je suis soixante-dix ans, alors quand il vient à apprendre de nouvelles choses que je suis un peu comme un vieux chien. J'ai programmé des puces de 8 et 16 bits pour le contrôle de processus industriels en C pendant trente ans. La programmation orientée objet est une toute nouvelle boule de cire, mais je suis en train d'apprendre à jouer à la balle.

Un grand merci pour toute aide.

Dan

Répondre

0

Vous pouvez utiliser un Singleton pour fournir un accès à l'instance de AVAudioPlayer. Cela impliquerait de créer une classe avec un membre statique (AVAudioPlayer) et une méthode de classe pour accéder au membre statique. myController2 et myController3 pourrait appeler la méthode de classe comme ceci:

[[MyPlayer player] stop];

+0

Merci. J'ai eu une solution de contournement de passer des pointeurs vers le lecteur de la vue pour voir, mais cela semble sujette aux erreurs. J'ai mis en place un Singleton en utilisant l'exemple du Guide des principes fondamentaux du cacao. Ma classe statique compile OK, mais quand j'essaie d'accéder aux méthodes, j'obtiens une exception. Comment puis-je mettre en place des méthodes dans le Singleton, comme une routine pour mettre en place le joueur. Je ne peux pas montrer la routine en raison de la limite de 600 ch. Je ne peux pas comprendre comment appeler une telle routine, mais je pensais que l'idée d'un singleton était de rendre possible les routines appelant certaines de partout. Pouvez-vous me montrer un exemple? Merci, Dan Dan –