Exibindo o progresso do download em células reutilizáveis
Estou tentando exibir o progresso do download nas células da minha coleção. Atualmente, estou usando o bloco de progresso da análise, que possui uma instância da célula e atualiza a barra de progresso.
}, progressBlock: { (percent) in
self.mainQueue.addOperation {
// set the downloadProgess var to update from cellForItemAt
// downloadProgress = (Float(percent) / Float(100))
if let downloadingCell = self.collectionView.cellForItem(at: self.indexPath) as? InnerCollectionCell {
downloadingCell.progressBar.isHidden = false
downloadingCell.contentView.bringSubview(toFront: downloadingCell.progressBar)
downloadingCell.progressBar.setProgress(Float(percent) / Float(100), animated: true)
downloadingCell.setNeedsDisplay()
downloadingCell.setNeedsLayout()
downloadingCell.isUserInteractionEnabled = false
downloadingCell.spinner.isHidden = true
}
}
})
Portanto, isso funciona bem, o problema que tenho agora é que, se eu deixar esse controlador de exibição, voltar para ver como os downloads estão indo, a instância da célula foi reutilizada e nenhum dos elementos desejados da interface do usuário está visível, mas o progresso ainda está correndo afastado em segundo plano.
O único lugar em que posso pensar em exibir novamente os elementos da interface do usuário é em cellForItemAt. O problema é que o progresso não é atualizado, apenas mostra o valor no momento em que a célula foi recarregada.
Como posso reutilizar a instância da célula que o bloco de progresso está usando ou exibir claramente os elementos da interface do usuário que continuam atualizando?