2016-07-18 11 views
0

In meiner tvOS-App habe ich einen AVPlayerViewController, der über einen Show-Sequence angezeigt wird, der eine Warnung anzeigt und die vorherige Ansicht abrollt, wenn keine Videos gefunden werden. Ich erstelle einen Alarm-Controller, präsentiere ihn und rufe den Abwicklungs-Abschnitt im Alert-Aktions-Handler auf. Alles scheint wie erwartet zu funktionieren, aber ich habe festgestellt, dass der nicht abgehängte View-Controller nicht freigegeben wird.AVPlayerViewController wird nach dem Abnehmen nicht freigegeben

let noVideosAlertController = UIAlertController(title: "No Videos Configured", message: "No videos are configured for this bank. Log into the OEC and select Lobby Display to add videos to your playlist.", preferredStyle: .Alert) 
let alertAction = UIAlertAction(title: "OK", style: .Default) { [weak self] (alert) in 
    self?.performSegueWithIdentifier("unwindToConfig", sender: self!) 
} 

noVideosAlertController.addAction(alertAction) 
presentViewController(noVideosAlertController, animated: true, completion: nil) 

Ich habe festgestellt, dass, wenn ich wieder nicht den Abwickler aufrufen und manuell die Menü-Taste drücken, um es ganz gut freigibt, so etwas über den Abwickler Segue ist der Spieler ausgeplant werden nicht erlaubt. Ich habe auch versucht, das Abwickelnsegment durch dismissViewControllerAnimated zu ersetzen und es scheint, den Spieler aber immer noch nicht dealloc zu entlassen.

+0

Es ist wahrscheinlich etwas falsch mit Ihrem Abwickel-Segment. Ich habe Ihren Code mit 'self? .navigationController? .popViewControllerAnimated (true)' getestet und stattdessen 'deinit' aufgerufen. Sie könnten in Erwägung ziehen, das oder 'self? .navigationController? .popToRootViewControllerAnimated (true)' aufzurufen, wenn einer der beiden für Ihre Situation geeignet ist. Ansonsten beschreiben Sie, wie Ihr Abwicklungsbereich eingerichtet ist. – beyowulf

+0

Ich verwende keinen Navigationscontroller, so dass 'popToRootViewControllerAnimated' nicht funktioniert. Ich habe das Abwickeln mit einer IBAction im config view controller eingerichtet, auf den ich mich abwickeln möchte, ein Abwicklungssegment, das im AVPlayerViewController als "unwindToConfig" identifiziert wird, und es wird durch "performSegueWithIdentifier" ausgelöst. Als Referenz habe ich [diesen Apple doc] (https://developer.apple.com/library/ios/technotes/tn2298/_index.html) mit ein paar zusätzlichen Hilfestellungen aus [dieser Anleitung] (https: //www.andrewcbancroft .com/2015/12/18/arbeiten-mit-abwickeln-segues-programmatically-in-swift /), um alles einzurichten. –

+0

Warum verwenden Sie ein Show-Segment, wenn Sie keinen 'UINavigationController' verwenden? Verwenden Sie einen 'UISplitViewController'? Vielleicht könnten Sie die Struktur Ihrer App beschreiben. – beyowulf

Antwort

0

Nach dem Testen dieser mit einer fast leeren Datei, die nur lädt, zeigt die Warnung, und abwickelt auf die Warnungsmaßnahme Handler, es delegiert gerade fein. Ich habe dies auf die viewDidDisappear-Methode des AVPlayerViewControllers verfolgt, die ich außer Kraft setzte, um etwas zu bereinigen. Ich ändere es in viewWillDisappear behoben mein Problem, aber ich bin mir nicht sicher warum.

Verwandte Themen