我尝试的第一种方法由于中断布局而导致错误,但基本上我的问题是:在一个tableview中,其单元格都有滑块/进度视图。如果用户点击下载它,这些滑块上的值需要等于附加的项目(我为每个单元分配RSS项目,它的音乐)它已下载的百分比。
我在观察者中调用此函数来获取下载进度:
//DOWNLOAD PROGRESS
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {
let progress = Double(totalBytesWritten) / Double(totalBytesExpectedToWrite)
print("\(downloadTask.originalRequest!.url!.absoluteString) \(progress)")
updateListCells()
}
以下是我尝试更新单元格的方法,以便用户可以看到进度条逐渐增长 - 我已经将单元格子类化了:
func updateListCells()
{
if let table = listVC.myTableView {
if(!table.visibleCells.isEmpty)
{
for v in table.visibleCells {
let cell = v as! RSSTableViewCell
cell.updateLoader()
}
}
}
}
func updateLoader()
{
self.bringSubview(toFront: downloadLoader)
if(pathUrl != nil)
{
if(checkIfExists(url: pathUrl!))
{
downloadLoader.progress = 1
}
else {
for d in downloadManager.operations {
if(URL(string: rssItem.link) == d.value.task.originalRequest?.url)
{
let progress = Double(d.value.task.countOfBytesReceived) / Double(d.value.task.countOfBytesExpectedToReceive)
//print("MATCH: ", d.value.task.countOfBytesSent)
downloadLoader.progress = Float(progress)
}
}
}
}
else {
downloadLoader.progress = 0
}
}
但这不会持续发挥作用。仅当我刷新tableview时,滑块才会假设其当前下载值。
如果发生下载,如何连续更新tableview单元?
答案 0 :(得分:0)
您应该在主线程中运行updateListCells()(如@arvidurs所写):
<div class="wb-tabs">
<div class="tabpanels">
<details id="details-panel-panel1">
<summary>Example 1</summary>
<p> ... </p>
</details>
<details id="details-panel-panel2">
<summary>Example 2</summary>
<p> ... </p>
</details> </div> </div>
var panel1 = ($("details-panel-panel1").attr("open")) ? true : false;
var panel2 = ($("details-panel-panel2").attr("open")) ? true : false;