Я думаю, что столкнулся с ошибкой в самом Xcode и надеялся найти какую-нибудь помощь в обходе этой проблемы. У меня есть видео с AVKit, и я хотел перейти к другому контроллеру представления, когда он закончил. Я обнаружил, что контроллер просмотра видео должен быть отключен до вызова segue, поэтому я добавил это. Конец видео совпадает с новым контроллером представления, поэтому я хочу, чтобы переключение было плавным, поэтому я анимировал: false для отклонения, вот что вызывает проблему. если для параметра animated установлено значение true, переход работает нормально, но если для него установлено значение false, переход не полностью завершается, видео отключается, и я вижу старый контроллер представления, переход вступает в силу только при нажатии на экран, и новый контроллер представления появляется. Вот этот код
animPlayer.dismiss(animated: false)
self.performSegue(withIdentifier: "BackpackSegue", sender: self)
Даже более странно, что код отлично работает на физическом ipad, поэтому это должна быть ошибка симулятора
Редактировать: Вот весь файл swift, я нов скажи мне, если тебе нужно что-то еще из проекта.
import UIKit
import AVKit
class FrontDoorOpen: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
}
*/
override var prefersStatusBarHidden: Bool{
return true
}
@IBOutlet weak var SegueImage: UIImageView!
let animPlayer = AVPlayerViewController()
@IBAction func DoorCloseSegue(_ sender: Any) {
if let path = Bundle.main.path(forResource: "DoorClose", ofType: "avi", inDirectory: "SegueAnimations")
{
let SegueAnimation = AVPlayer(url: URL(fileURLWithPath: path))
animPlayer.player = SegueAnimation
animPlayer.showsPlaybackControls = false
animPlayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
NotificationCenter.default.addObserver(self, selector: #selector(self.finishVideo), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: nil)
present(animPlayer, animated: false, completion:
{
SegueAnimation.play()
})
}
SegueImage.isHidden = false
}
@objc func finishVideo()
{
animPlayer.dismiss(animated: false)
// Simulator Pauses Here !!
self.performSegue(withIdentifier: "DoorCloseSegue", sender: self)
}
}
После еще нескольких экспериментов симулятор, кажется, делает паузу между dismiss и segue, переход происходит только с щелчком