UITableViewCell中的AVPlayer导致“意外发现nil,同时隐式展开一个可选值”错误

问题描述 投票:0回答:1

我正在尝试设置一个自定义UITableViewCell,它将在单元格中包含视频播放器。

我在电话上收到"Unexpectedly found nil while implicitly unwrapping an Optional value"

"playerLayer.frame = self.videoPlayerSuperView.bounds"

这是我使用的代码:

import UIKit
import AVFoundation

class feedCell: UITableViewCell {


    @IBOutlet weak var dateLabel: UILabel!
    @IBOutlet weak var nameLabel: UILabel!
    @IBOutlet weak var viewsLabel: UILabel!
    @IBOutlet weak var postTextLabel: UILabel!
    @IBOutlet weak var videoPlayerSuperView: UIView!

    override func awakeFromNib() {
        super.awakeFromNib()
        let videoURL = URL(string: "https://some.url.of.an.mp4")
        let player = AVPlayer(url: videoURL!)
        let playerLayer = AVPlayerLayer(player: player)
        playerLayer.frame = self.videoPlayerSuperView.bounds
        self.videoPlayerSuperView.layer.addSublayer(playerLayer)
        player.play()
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
    }
}

我该如何解决?

ios swift avplayer avplayerlayer
1个回答
0
投票

尝试添加延迟

override func awakeFromNib() 
{
    super.awakeFromNib()

   DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.2 , 
   execute:
    {
         let videoURL = URL(string: "https://some.url.of.an.mp4")
         let player = AVPlayer(url: videoURL!)
         let playerLayer = AVPlayerLayer(player: player)
         playerLayer.frame = self.videoPlayerSuperView.bounds
         self.videoPlayerSuperView.layer.addSublayer(playerLayer)
         player.play()

    })

}
© www.soinside.com 2019 - 2024. All rights reserved.