这是一个真正的头部抓痒器,我正在像这样使用操作队列:
let queue = OperationQueue()
queue.qualityOfService = .userInteractive
queue.addOperation {
generator = BillGenerationv3(procedures: procedure)
batchPrinting = true
if generator!.generateBills(pInfo: pInfo, cInfo: cInfo, view: self) {
DispatchQueue.main.async { // Correct
self.progressBar.progress = Float(count/uidPrecentage)
self.title = "Batching Claims \(count)/\(uidPrecentage)...Please Wait"
nextClaim()
}
}
}
它完美地更新了标题,但是进度条直到最后都没有任何作用。我在做什么错了?
答案 0 :(得分:2)
let someInt: Int = 3
let someOtherInt: Int = 5
这不起作用
print(Float(someInt/someOtherInt))
//"0.0"
这将
print(Float(someInt)/Float(someOtherInt))
//"0.6"
原因是,在第一种情况下,您要使用整数除法的结果初始化Float,这会导致根据操作的性质将结果舍入为整数。
第二种情况涉及显式除以两个浮点数,因此结果也将是浮点并处理十进制数。
答案 1 :(得分:1)
首先,请确保您的值count
和uidPrecentage
返回有效值(根据您的估计),并且演算为 0 <=值<= 1 。
最后但并非最不重要的一点是,您应该使用进度视图的类方法setProgress(_ progress: Float, animated: Bool)
对其进行更新,而不是直接修改变量。如官方文档https://developer.apple.com/documentation/uikit/uiprogressview/1619846-setprogress所示,如果您愿意,它甚至可以免费为您提供进度动画