Большое спасибо за объяснение всего этого так ясно.
аюсь отобразить прогресс загрузки в своих ячейках коллекции. В настоящее время я использую прогресс-блок анализа, который имеет экземпляр ячейки и обновляет индикатор выполнения.
}, 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
}
}
})
Так что это работает нормально, проблема, с которой я столкнулся, заключается в том, что если я покину этот контроллер представления, а затем вернусь, чтобы посмотреть, как идут загрузки, экземпляр ячейки был повторно использован, и ни один из требуемых элементов пользовательского интерфейса не виден, но прогресс все еще идет далеко на заднем плане.
Единственное место, где я могу подумать, чтобы отобразить элементы пользовательского интерфейса - это cellForItemAt. Проблема в том, что прогресс не обновляется, он просто показывает значение во время перезагрузки ячейки.
Как я могу использовать экземпляр ячейки, которую использует блок прогресса, или правильно отображать элементы пользовательского интерфейса, которые продолжают обновляться?