我someObj !.someProp
内有UILabel
。我正在将音频下载到我的设备,并使用UITableViewCell
显示已完成的下载百分比。下载开始后,这样可以正常工作。
UILabel
现在,如果我转到另一个视图控制器并再次回到上一个视图控制器(即,如果我重新加载我的视图),则继续下载,但 func urlSession(_ session: URLSession, assetDownloadTask: AVAssetDownloadTask, didLoad timeRange: CMTimeRange, totalTimeRangesLoaded loadedTimeRanges: [NSValue], timeRangeExpectedToLoad: CMTimeRange) {
var percentComplete = 0.0
// Iterate through the loaded time ranges
for value in loadedTimeRanges {
// Unwrap the CMTimeRange from the NSValue
let loadedTimeRange = value.timeRangeValue
// Calculate the percentage of the total expected asset duration
if timeRangeExpectedToLoad.duration.seconds > 0{
percentComplete += loadedTimeRange.duration.seconds / timeRangeExpectedToLoad.duration.seconds
}
print(percentComplete)
}
percentComplete *= 100
DispatchQueue.main.async {
self.updateCell(Int(percentComplete))
}
}
}
@objc private func updateCell(_ percentComplete:Int) {
self.myLabel.setNeedsDisplay()
self.myLabel.text = "(DownloadStatus)
(percentComplete)%
}
不再自动更新。如果我打印?UILabel文本,它会打印正确的文本,但在重新加载视图后不会自动更新。
编辑:注意 - >重新加载视图时,没有任何出口(即按钮,标签等)在“urlSession Delegate方法”内更新。我可以看到他们的价值变化但不是UI。