将数据从ViewController传递到Class

时间:2016-01-05 12:32:17

标签: ios swift delegates avfoundation protocols

据我所知,为了将数据从一个类传递到一个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点奖金)

0 个答案:

没有答案