UIProgressView没有更新,但是标题是

时间:2019-03-05 16:18:59

标签: ios uiprogressview

这是一个真正的头部抓痒器,我正在像这样使用操作队列:

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()
        }                                
  }
}

它完美地更新了标题,但是进度条直到最后都没有任何作用。我在做什么错了?

2 个答案:

答案 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)

首先,请确保您的值countuidPrecentage返回有效值(根据您的估计),并且演算为 0 <=值<= 1

最后但并非最不重要的一点是,您应该使用进度视图的类方法setProgress(_ progress: Float, animated: Bool)对其进行更新,而不是直接修改变量。如官方文档https://developer.apple.com/documentation/uikit/uiprogressview/1619846-setprogress所示,如果您愿意,它甚至可以免费为您提供进度动画