使用 swift 我无法弄清楚视频停止后如何进入新屏幕

Posted

技术标签:

【中文标题】使用 swift 我无法弄清楚视频停止后如何进入新屏幕【英文标题】:Using swift I cant work out how to go to a new screen once video has stoped 【发布时间】:2020-04-19 10:17:15 【问题描述】:

我有一个初始屏幕,上面有一个按钮,当您按下它时会播放视频。然后,一旦电影结束,我希望视频关闭并转到另一个屏幕。目前我可以让按钮播放视频,然后在视频结束时关闭视频,但它会返回到初始屏幕。可以帮忙吗?我在下面粘贴了我的代码。

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】:

“完成”是什么意思?

是否意味着视频已结束或用户关闭视图控制器或其他?

当视频播放完毕,你需要使用 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,它有几种方法可以满足您的需求

【讨论】:

感谢您的回复。是的,我的意思是当视频“结束”时。感谢您的代码,我会看看。 我无法让您的示例工作,但已调整代码并将其添加到上面。我现在可以按一个按钮等待视频结束,然后它会回到原来的屏幕我仍然不知道如何转到另一个屏幕。我查看了委托,但我无法弄清楚如何将其集成到代码中。非常感谢任何帮助。

以上是关于使用 swift 我无法弄清楚视频停止后如何进入新屏幕的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 - 无法弄清楚如何从 jsonArray 创建 json 对象

无法弄清楚如何在 Swift 中使用 NSURLSession 将 jsonData 加载到 NSDictionary

无法弄清楚如何防止 Date 类型崩溃并在 Swift 3 中包装

斯威夫特:无法弄清楚如何保存用户离开表格视图的方式

如何将 swift 文件与 SKscene 连接?

Alamofire 4 请求返回 NSArray,无法弄清楚如何在 Swift 3 中使用 SwiftyJSON 进行解析