Nun, dies ist mein erster Beitrag überhaupt - zwischen dieser Website, persönlichen Blogs und den Foren von iPhoneDevSDK war ich immer in der Lage, Dinge selbst herauszufinden. Ich entwickle seit etwa fünf Monaten für iOS und habe nie außerhalb von Google um Hilfe gebeten. Aber dieses Mal stecke ich fest.
Ich habe Matt Galaghers AudioStream-Klasse erfolgreich implementiert (ich musste den Link entfernen, weil SO annimmt, dass mein Beitrag Spam ist) und ich freue mich berichten zu können, dass es wunderbar funktioniert. Ich verwende es in einem View-Controller, der eigentlich eine untergeordnete Ansicht in einer TabBar-App ist. In der Tat ist meine Implementierung nicht viel anders als in Matts Beispiel - Ich habe nur einige UI-Elemente geändert.
Bis zu diesem Zeitpunkt habe ich viewDidDisappear
verwendet, um den Streamer zu stoppen, wenn der Benutzer zu einem anderen Tab wechselt. Aber vor kurzem entschied ich, dass es einfach wäre, den Audio-Stream so lange laufen zu lassen, wie die App läuft, egal welche Ansicht oben ist. Das war eine sehr einfache Änderung, und jetzt spielt mein Audio-Stream weiter, egal wo ich in der App bin.
So funktioniert der View-Controller:
Alle oben genannten funktionieren perfekt jedes Mal. Wenn ich die Ansicht verlasse (entweder indem ich zur übergeordneten Ansicht blicke oder zu einer anderen Registerkarte navigiere), wird der Ton wiedergegeben, was genau das ist, was ich möchte. Aber wenn ich zur Ansicht zurückkehre, erscheint die Benutzeroberfläche so, als hätte ich sie noch nicht gestartet (Play-Schaltfläche sichtbar, Navigationsprompt ist ausgeblendet). Wenn ich die Play-Taste drücke, höre ich einen zweiten Stream gleichzeitig mit dem ersten.
Die updateProgress
scheint gestoppt zu haben (da self.navigationItem.prompt
nicht mehr sichtbar ist), und ich schätze, dass playbackStateChanged
"tot" ist (ich bin mir nicht sicher, wie ich es beschreiben soll).
Ich habe Stunden damit verbracht, die AudioStreamer-Klasse zu durchsuchen, um herauszufinden, wie ich die Kontrolle über den Stream behalten kann, aber ich bin erschöpft. Ich hoffe, jemand könnte mir sagen, was ich vermisse.
Wie ich bereits sagte, ist mein View-Controller fast identisch mit dem Beispiel (siehe obigen Hyperlink, da SO immer noch davon ausgeht, dass ich ein Spammer bin), mit nur wenigen UI-bezogenen Änderungen.
Ich denke, die kurze Frage wäre folgende: Ist jemand in der Lage gewesen, die AudioSTreamer-Klasse zu implementieren, ihre Ansicht zu öffnen, dann zurück zu kommen und die verstrichene Zeit anzuzeigen oder den Stream zu stoppen?
EDIT: unten ist mein View-Controller, der AudioStreamer implementiert
Es stellte sich heraus, dass ich nur darüber nachdenken musste, wie ich meine Ansichten ordnete und pustete. Die Registerkarte "Mehr" zeigt eine Tabellenansicht an, und jede Zelle stellt eine untergeordnete Ansicht dar, die bei Auswahl dieser Zelle verschoben wird. Ich habe diese Ansicht geändert, um alle untergeordneten Ansichten in viewDidLoad
zuzuordnen, dann führe einfach den Push in didSelectRowAtIndexPath
aus und gebe die untergeordneten Ansichten in dealloc
frei.
Dies löst mein Problem perfekt. Danke an Jason Coco, dass er den Ball ins Rollen gebracht hat.
Tags und Links objective-c iphone ios audiostreamer