据我所知,为了将数据从一个类传递到一个UIViewController,我使用了协议&代表,它就像魅力一样。我做了什么:
在 Player class 中,我添加了:
public protocol PlayerDelegate {
func playerPlaybacksTimer(NSString: String)
}
public convenience init() {
player.addPeriodicTimeObserverForInterval(CMTimeMake(1, 100), queue: dispatch_get_main_queue()) {
[unowned self] time in
let timeString = String(format: "%02.2f", CMTimeGetSeconds(time))
self.delegate?.playerPlaybacksTimer(timeString)
}
}
然后我添加了协议& UIViewController中的协议方法:
class ViewController: UIViewController, PlayerDelegate {
func playerPlaybacksTimer(currentTime: String) {
durationSlider.value = Float(currentTime)!
print(currentTime)
}
}
直到这里,它运作良好,我可以得到播放器的当前时间。但是,现在,我正在尝试反向,因此将数据从ViewController发送到Class。 (为了实现我想要实现的目标,使用上述方法,我将播放器的当前播放时间分配给UISlider,并且随着视频的继续,滑块的值也在变化)
此时,我想让用户能够更改UISlider值并操纵/更改视频的当前播放时间。据我了解,我应该使用seekToTime
,但我完全迷失了如何实现这一目标。
我应该从ViewController到Class设置另一个协议吗?实现UISlider的值分配给当前值的方法是什么?
至少,请指导我将数据从VC传递给班级的第一步?我假设一旦我在Player类中获得滑块的值,我就可以尝试使用SeekToTime
方法来理解和应用。
P.S :我正在使用Player(这是一个安静的直接库)的演示项目,该项目使用AVPlayer& AVFoundation
P.S 2 :我问了另一个关于类似主题的问题并开了一个赏金here。还请查看那里,有关我的问题的更详细的解释(并可能获得50点奖金)。