在循环期间更新进度条
Posted
技术标签:
【中文标题】在循环期间更新进度条【英文标题】:Updating progress bar during loop 【发布时间】:2017-01-17 18:07:30 【问题描述】:我有两个控制器。首先,我有一个进度条,并且有一个获取数据和循环的请求。我需要在循环期间更新第一个控制器上的栏。问题是即使它不更新循环,斜杠也只会在方法执行完成时更新。
第一视图:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0))
for i in 0 ..< JSON.count
autoreleasepool
count = count + 1
if count >= percentage
progress = progress + 1
//This notification executes the method that makes the update in the first view
NSNotificationCenter.defaultCenter().postNotificationName("ProgressNotification", object: nil, userInfo: ["label":"Clientes", "progress" : progress])
count = 0
第二视图:
//更新工具栏的方法
func addProgress(notification:NSNotification)
dispatch_async(dispatch_get_main_queue())
self.progressBar.setProgress(CGFloat.init(notification.userInfo!["progress"] as! Int), animated: true)
self.progressLabel.text = notification.userInfo!["label"] as? String
【问题讨论】:
【参考方案1】:我不确定您是否经常切换线程以及绕过通知服务。但是,您应该将进度设置为 0.0 到 1.0 之间的浮点数。 您正在做的是将 int 值从 1 转换为 JSON.count 以浮动。因此,您的进度值始终为 1.0 或更高。
最好使用.setProgress(CGFloat.init(JSON.count) / CGFloat.init(i))
之类的东西。
两者都做,将整数转换为浮点数,并确保除法是浮点除法而不是整数除法。 (整数除法将评估为 0 或 1 或更多,但注意介于两者之间。)
【讨论】:
以上是关于在循环期间更新进度条的主要内容,如果未能解决你的问题,请参考以下文章
使用 WCF Duplex 回调更新 JQuery 进度条?
数据导入CoreData期间如何显示progressBar?