2016-07-18 4 views
0

В моем приложении tvOS у меня есть AVPlayerViewController, представленный через show segue, который показывает предупреждение и отключается от предыдущего представления, если видео не найдено. Я создаю контроллер предупреждения, представляю его и вызываю разматывать сеанс в обработчике действия предупреждения. Кажется, что все работает так, как ожидалось, но я обнаружил, что диспетчер разворота не освобождается.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) 

Я обнаружил, что если я не позвоню раскрутку и вручную нажмите кнопку меню, чтобы вернуться назад, он освобождает просто отлично, так что-то о размотки Segue не позволяет игроку быть высвобождены. Я также попытался заменить разматывание на dismissViewControllerAnimated, и, похоже, он уволил игрока, но все равно не сделал dealloc.

+0

Возможно, что-то не так с вашим разумом. Я проверил ваш код с помощью 'self? .navigationController ?.popViewControllerAnimated (true)' вместо этого и 'deinit'. Вы можете подумать о том, что это или 'self? .navigationController? .popToRootViewControllerAnimated (true)', если любой из них работает для вашей ситуации. В противном случае укажите, как настроен ваш режим размотки. – beyowulf

+0

Я не использую контроллер навигации, поэтому 'popToRootViewControllerAnimated' не будет работать. Я настроил разматывание с помощью IBAction в контроллере представления конфигурации, в котором я хочу расслабиться, развязать segue, идентифицированный как «unindToConfig» в AVPlayerViewController, и он запускается 'performSegueWithIdentifier'. В качестве ссылки я использовал [этот яблочный документ] (https://developer.apple.com/library/ios/technotes/tn2298/_index.html) с дополнительной помощью из [данного руководства] (https: //www.andrewcbancroft .com/2015/12/18/working-with-unwind-segues-programatically-in-swift /), чтобы все исправить. –

+0

Почему вы используете show segue, если вы не используете 'UINavigationController'? Вы используете 'UISplitViewController'? Возможно, вы могли бы описать структуру своего приложения. – beyowulf

ответ

0

После тестирования этого файла с почти пустым файлом, который просто загружается, отображает предупреждение и разматывается в обработчике действия предупреждения, он освобождается от штрафа. Я отследил это до метода viewDidDisappear AVPlayerViewController, который я переопределял, чтобы выполнить некоторую очистку. Меняя его на viewWillDisappear, я исправил свою проблему, хотя не знаю, почему.