Используя swift, я не могу понять, как go перейти на новый экран после остановки видео - PullRequest
0 голосов
/ 19 апреля 2020

У меня начальный экран с кнопкой на нем, который при нажатии на него воспроизводит видео. Затем, как только фильм закончится, я хочу, чтобы видео закрылось и показывало go на другом экране. В данный момент я могу заставить кнопку воспроизводить видео, а затем, когда видео заканчивается, закрыть видео, но оно возвращается к начальному экрану. Может ли помочь? Я вставил свой код ниже.

import UIKit
import AVKit
import AVFoundation

class ViewController: UIViewController {
let playerViewController = AVPlayerViewController()

override func viewDidLoad() {
    super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

@IBAction func playButton(_ sender: AnyObject) {

    let movieURL = Bundle.main.url(forResource: "video", withExtension: "mp4")!
    let player = AVPlayer(url: movieURL as URL)

    playerViewController.player = player
    NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: playerViewController.player?.currentItem)

    self.present(playerViewController, animated: true) {
        self.playerViewController.player!.play()
    }
}


@objc func playerDidFinishPlaying(note: NSNotification) {
        self.playerViewController.dismiss(animated: true)
       }
}

1 Ответ

1 голос
/ 19 апреля 2020

Что вы подразумеваете под "готово"?

означает ли это, что видео закончено или пользователь закрывает viewcontroller или другое?

, когда видео заканчивается sh, вам нужно использовать NotificationCenter

func playVideo(url: URL) {
  let playerItem = AVPlayerItem(asset: AVURLAsset(url: someVideoUrl))
  NotificationCenter.default.addObserver(self, selector: #selector(playerItemDidPlayToEndTime), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: playerItem)
  self.player.replaceCurrentItem(with: playerItem)
  self.player.play()
}

func playerItemDidPlayToEndTime() {
  // load next video or something
}

когда пользователь закрывает AVPlayerViewController,

, вы можете проверить AVPlayerViewControllerDelegate , у него есть несколько методов, которые могут удовлетворить вашу потребность

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...