从观察者更新TableView单元格UI

时间:2018-06-22 07:49:29

标签: swift uitableview

我正在尝试在下载文件时更新单元格的UI。我有一个侦听器,它跟踪下载进度。

但是似乎我无法从侦听器更新UI,|a, 2, null, null|reloaddata()都不起作用

以下是一些代码:

layoutifneeded()

1 个答案:

答案 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方法中设置数据