在标签中显示测试时出错

时间:2017-02-19 07:37:37

标签: ios xcode swift3

我使用BMPlayer。 使用func:

bmPlayerView.playTimeDidChange = { (currentTime: TimeInterval, totalTime: TimeInterval) in
            //            print("playTimeDidChange currentTime: \(currentTime) totalTime: \(totalTime)")
            self.subtitleShow(currentTime: currentTime)
        }

用于标签中的show Subtitle。

 func subtitleShow(currentTime: TimeInterval){

let millisecond = Int(currentTime * 1000)

                for i in (clip.subtitle?.enDialog)!{
                    if i.start <= millisecond && i.end >= millisecond {
                            subtitleLabel.text = i.text
                            return
                        }

                    }

            }

但显示错误:

enter image description here

请帮帮我

3 个答案:

答案 0 :(得分:1)

错误消息只是告诉您更新主线程上的标签:

bmPlayerView.playTimeDidChange = { (currentTime: TimeInterval, totalTime: TimeInterval) in
    DispatchQueue.main.async {
       self.subtitleShow(currentTime: currentTime)
    }
}

答案 1 :(得分:1)

如果要更改UI,则必须从主线程执行此操作。 你可以用这个

bmPlayerView.playTimeDidChange = { (currentTime: TimeInterval, totalTime: TimeInterval) in
     // print("playTimeDidChange currentTime: \(currentTime) totalTime: \(totalTime)")
        dispatch_async(dispatch_get_main_queue()) { [weak self] () -> Void in
                    self?.subtitleShow(currentTime: currentTime)
        }

}

答案 2 :(得分:1)

你无法从后台修改gui。为此,您需要使用

DispatchQueue.main.async(){
    //code
}