2016-07-18 5 views
0

私のtvOSアプリケーションでは、AVSlayerViewControllerが表示されます。これはアラートを表示し、ビデオが見つからない場合は前のビューに戻ります。私はアラートコントローラを作成し、それを提示し、アラートアクションハンドラで巻き戻しセグを呼び出します。すべてが期待どおりに動作するように見えますが、アンワインドビューコントローラが割り当て解除されていないことがわかりました。AVPlayerViewControllerがアンワインド後に割り当てを解除しない

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) 

私はアンワインドセグエについて何かをプレイヤーが割り当てを解除することができていない私はアンワインドを呼び出して、手動で戻って行くためにメニューボタンを押していない場合、それはとてもうまく割り当てを解除することを発見しました。私はまた、巻き戻しセグをdismissViewControllerAnimatedに置き換えようとしましたが、プレイヤーを却下しても、まだdeallocは消えているようです。

+0

あなたの巻き戻し縫い目に問題がある可能性があります。私はあなたのコードを 'self?.navigationController?.opViewControllerAnimated(true)'で代わりにテストし、 'deinit'が呼び出されました。自分の状況に合ったものがあれば、 'self?.navigationController?.popToRootViewControllerAnimated(true)'を呼び出すことも考えられます。そうでなければ、アンワインドセグがどのように設定されているかを記述します。 – beyowulf

+0

私は 'popToRootViewControllerAnimated'が動作しないようにナビゲーションコントローラを使用していません。私は、アンワインドしたいコンフィグレーションビューのコントローラでIBActionをアンワインドに設定し、AVPlayerViewControllerの "unwindToConfig"として識別されたunwind segueを設定し、それは 'performSegueWithIdentifier'によってトリガされます。参考までに[私はこのapple doc](https://developer.apple.com/library/ios/technotes/tn2298/_index.html)と[このガイド](https://www.andrewcbancroft .com/2015/12/18/unwind-with-unwind-segues-プログラム的には迅速に)/すべてを設定します。 –

+0

あなたが 'UINavigationController'を使用していない場合、なぜショーセグを使用していますか?あなたは 'UISplitViewController'を使用していますか?おそらくあなたはあなたのアプリの構造を記述することができます。 – beyowulf

答えて

0

ロード済みのほぼ空のファイルでこれをテストした後、アラートを表示し、アラートアクションハンドラを巻き戻します。私はこれをAVPlayerViewControllerのviewDidDisappearメソッドで追跡して、クリーンアップをオーバーライドしました。それをviewWillDisappearに変更すると、理由はわかりませんが、私の問題は修正されました。

関連する問題