我正在尝试更新queryPedometerDataFromDate(..)方法的处理程序内的UILabel文本。 UILabel的更新在20或25秒后反映出来。但我几乎实时看到println()输出。有没有办法让它更快? 如果我在此处理程序之外更新UILabel的文本,那么它会再次实时更新。
pedoman.queryPedometerDataFromDate(yester, toDate: now) {
(data:CMPedometerData!, errr:NSError!) -> Void in
//Below statement take 20 to 30 second to reflect on UILabel
self.StringSteps.text = data.numberOfSteps.stringValue
//Below statement prints on Output in real time.
println("Number of Steps \(data.numberOfSteps)")
}
答案 0 :(得分:8)
您需要在主线程上更新UILabel。
dispatch_async(dispatch_get_main_queue(), {
self.StringSteps.text = data.numberOfSteps.stringValue
});
答案 1 :(得分:3)
您提供给queryPedometerDataFromDate:toDate:withHandler:
方法的块在串行队列中执行,而不是在主线程上执行。您应该从主线程进行所有UI更新。您可以使用GCD这样做:
dispatch_async(dispatch_get_main_queue(), {
self.StringSteps.text = data.numberOfSteps.stringValue
})
答案 2 :(得分:0)
Swift 4.2
@user.tags