【问题标题】:Returning to a previous view controller返回上一个视图控制器
【发布时间】:2020-08-18 09:18:03
【问题描述】:

我有一个通过编码而不是故事板制作的视图控制器来显示视频。 视频播放完毕后,我无法让视图控制器返回上一个。我有一个按钮可以将用户带到视频但是当视频完成时它不会返回到以前的视图控制器。

import AVKit
import AVFoundation
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()


    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        let player = AVPlayer(url: URL(fileURLWithPath: Bundle.main.path(forResource: "tour", ofType: "mov")!))


   let vc = AVPlayerViewController()
      vc.player = player
     present(vc, animated: true)
    }


}

这是我的视频代码。我已经完成了在我的故事板上构建应用程序的所有其他工作

【问题讨论】:

  • 请显示示例代码
  • 我已经包含了它。谢谢
  • 你不需要调用一个新的viewcontroller来调用AVPlayerViewController(),尝试在之前的viewcontroller上调用它然后当它dismiss时会停留在你想要的控制器上

标签: swift storyboard uistoryboard viewcontroller xcode11.4


【解决方案1】:

要在视频结束后返回上一个 VC,您需要 -

  1. 添加一个观察者,它可以检测到视频何时停止播放然后 -
  2. 关闭AVPlayerViewController

完成任务 1 - Channel 的这个回答有助于设置观察者 -https://stackoverflow.com/a/40056529/13451699

要执行任务 2 - 只需从 playerDidFinishPlaying 函数内部关闭 AVPlayerViewController,如下所示:

func playerDidFinishPlaying(note: NSNotification){
  // Video finished playing
  self.dismiss(animated: true, completion: nil)
}

【讨论】:

  • 我是编码新手。您能否向我解释一下我将如何完成任务 2,如何将观察者添加到我的 swift 代码中。如果我只删除该部分,也可以解雇 AVPlayerViewController。谢谢
  • 我已经编辑了答案以说明您如何完成任务 2
  • 很高兴为您提供帮助。如果答案有帮助,请接受:)
猜你喜欢
  • 2017-05-26
  • 2015-05-13
  • 2016-06-19
  • 2018-03-08
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
  • 2023-03-24
相关资源
最近更新 更多