前提・実現したいこと
Swiftで動画が終了した際に今いるPlumeriaViewControllerから次のResultViewControllerへ画面が遷移するように実装しています。
しかし、エラーが発生しどうしても画面が遷移しません。
発生している問題・エラーメッセージ
whose view is not in the window hierarchy!
該当のソースコード
Swift
1 2import UIKit 3import AVKit 4 5class PlumeriaViewController: UIViewController { 6 7 var player: AVPlayer! 8 9 10 11 @IBAction func Plumeria4Result(_ sender: Any) { 12 13 if let path = Bundle.main.path(forResource: "Plumeria4" , ofType: "mp4") 14 { 15 let video = AVPlayer(url: URL(fileURLWithPath: path)) 16 let videoPlayer = AVPlayerViewController() 17 videoPlayer.player = video 18 19 present(videoPlayer, animated: true, completion: 20 { 21 video.play() 22 }) 23 } 24 25} 26 27 override func viewDidAppear(_ animated: Bool) { 28 super.viewDidAppear(animated) 29 NotificationCenter.default.addObserver(self, 30 selector: #selector(self.movieEnd), 31 name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, 32 object: nil) 33} 34 35 @objc func movieEnd() { 36 let ResultViewController = self.storyboard?.instantiateViewController(withIdentifier: "last") as! ResultViewController 37 self.present(ResultViewController, animated: true, completion: nil) 38 } 39
試したこと
エラーに対しての対処法として書かれているのは
override func viewDidLoad() {
super.viewDidLoad()
ではなく、
override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated)
でやれば上手く行くと書かれていますが、その通りやっても上手く行きませんでした。というか
@objc func movieEnd() {
}
の部分にviewDidLoadを入れる感じだと思いますが、やり方が分からないので教えていただければと思います。
補足情報(FW/ツールのバージョンなど)
すいません。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/20 03:02