2009-07-17 5 views
0

Ich habe einen AVAudioPlayer, nennen wir es player1, der in einem bestimmten UIViewController startet, nennen wir es myController1. Ich setze numberOfLoops auf -1, so dass das Audio unendlich lange läuft. Ich habe ein Protokoll eingerichtet, so dass myController1 als Stellvertreter für den AVAudioPlayer fungiert, so dass ich audioPlayerDidFinishPlaying auslösen kann. Ich habe auch eine Routine geschrieben, um den Player innerhalb von myController1 zu stoppen. Das alles funktioniert.Stoppen von AVAudioPlayer von überall in der App

Angenommen, ich habe zusätzliche UIViewControllers, sagen wir, myController2 und myController3. Ich habe die Foren und die Apple-Dokumentation durchkämmt, aber ich kann keine Möglichkeit finden, den Player von einem dieser zusätzlichen Controller aus zu stoppen. Ist es möglich? (Ich widerstrebe nicht zu glauben, dass es nicht ist.) Wenn ja, kann ich ein paar Hinweise bekommen?

Ich bin 70 Jahre alt, und wenn es darum geht, neue Dinge zu lernen, bin ich irgendwie wie ein alter Hund. Ich programmierte 8 und 16 Bit Chips für die industrielle Prozesskontrolle in C für 30 Jahre. Objektorientierte Programmierung ist eine ganz neue Kugel aus Wachs, aber ich habe einen Ball zu lernen.

Vielen Dank für jede Hilfe.

Dan

Antwort

0

könnten Sie einen Singleton verwenden, um Zugriff auf die Instanz von AVAudioPlayer bereitzustellen. Dies würde das Erstellen einer Klasse mit einem statischen Member (AVAudioPlayer) und einer Klassenmethode für den Zugriff auf das statische Member beinhalten. myController2 und myController3 könnte die Klassenmethode wie so nennen:

[[MyPlayer player] stop];

+0

Dank. Ich hatte eine Problemumgehung der Übergabe von Zeigern an den Player von Sicht zu Sicht, aber das scheint fehleranfällig. Ich habe ein Singleton mit dem Beispiel aus dem Cocoa Fundamentals Guide eingerichtet. Meine statische Klasse kompiliert OK, aber wenn ich versuche, auf Methoden zuzugreifen, erhalte ich eine Ausnahme. Wie richte ich Methoden im Singleton ein, z. B. eine Routine zum Einrichten des Players. Ich kann die Routine wegen der 600-K-Grenze nicht zeigen. Ich kann nicht herausfinden, wie man eine solche Routine nennt, aber ich dachte, dass die ganze Idee eines Singletons es möglich machen würde, bestimmte Routinen von überall aufzurufen. Kannst du mich auf ein Beispiel hinweisen? Danke, Dan Dan –

Verwandte Themen