在我的tvOS应用程序中,我有一个AVPlayerViewController,通过show segue显示,它会显示警报,如果找不到视频,则会退到上一个视图。我创建了一个警报控制器,呈现它,并在警报操作处理程序上调用解除segue。一切似乎都如预期的那样工作,但我发现未展开的视图控制器没有被释放。
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
代替放松赛格,它似乎解雇了球员,但仍然没有解除锁定。
用一个几乎为空的文件测试了这一点,该文件只加载、显示警报并在警报操作处理程序上展开,之后它就可以很好地解除分配了。我跟踪到AVPlayerViewController的viewDidDisappear
方法,我正在重写该方法以进行一些清理。将其更改为viewWillDisappear
解决了我的问题,但我不知道为什么。