Создание страницы загрузки в приложении, и в UITableView более 10 UIProgressView.Индикаторы выполнения работают нормально, но как только они прокручиваются за пределы экрана и прокручиваются назад, они обновляются один раз, затем они отказываются обновлять больше, хотя они все еще загружаются.
Вот код (очистите другой код длячистый взгляд):
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! DownloadCell
cell.dnProgress.setProgress(pg, animated: true)
cell.dnProgress.isHidden = false
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
for v in (cell.subviews){
if let p = v as? UIProgressView{
self.downloadingProgress.append(p)
}
}
goDownload(cloudData[indexPath.row)
}
func updateProgress(_ theData:String, percent:Float){
let i:Int = downloadingArray.index(of: theData)
self.downloadingProgress[i].setProgress(percent, animated: true)
}
Я думаю, что это что-то о повторном использовании клеток, кто-нибудь может помочь?
* Решение, вдохновленное идеей Аарона *
Добавить еще один массив для хранения загружаемой ячейки indexPath
func updateProgress(_ theData:String, percent:Float){
let i:Int = downloadingArray.index(of: theData)
let indexPath = dndingIndexPathArr[i]
if let cell = tableView.cellForRow(at: indexPath) as? DownloadCell{
cell.dnProgress.setProgress(percent, animated: true)
}
saveData.set(percent, forKey: "\(theData)Progress")
}