我正在尝试在下载文件时更新单元格的UI。我有一个侦听器,它跟踪下载进度。
但是似乎我无法从侦听器更新UI,|a, 2, null, null|
和reloaddata()
都不起作用
以下是一些代码:
layoutifneeded()
答案 0 :(得分:0)
是的,根据Kamran的答案,检查是否在主线程中执行了UI功能。
也。
tableView.reloadData()将调用cellForRowAtIndexPath, 因此您必须在cellForRowAtIndexPath中更新标签文本。
您可以尝试这样做而无需调用reloadData
case VODownloaderInfo.infoDownloadProgress.rawValue:
print("infoDownloadProgress")
//Example: Update first cell UI
let indexPath = IndexPath(item: 0, section: 0)
let cell = tableView.cellForRow(at: indexPath) as? DownloadsTableViewCellPhone
tableView.beginUpdates()
cell?.downloadedVideoDownloadProgressLabel.text = "Download duration \(downloader.duration) %"
tableView.endUpdates()
另一种避免不必要地重新加载整个tableView内容的方法
tableView.reloadRows(at: [indexPath], with: .none)
但无论如何,更合适的方法是在UITableViewDatasource cellForRowAtIndexPath方法中设置数据