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.
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
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. –
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