Я пытаюсь отобразить индикатор прогресса внутри ячейки collectionView. Для этого есть фоновый поток, который отправляет уведомление в главный поток для обновления индикатора прогресса.setNeedsDisplay() не обновляет drawViewViewViewCell subView
В главном контроллере представления ...
func updateProgressIndicator(notification:NSNotification){
let userInfo = notification.userInfo! as NSDictionary
let date = userInfo["date"] as! NSDate
let percentComplete = userInfo["percent"] as! Double
self.progressIndicator.text = "\(percentComplete)%" // this works
let dateIndex = self.calendarDates.indexOf(date)
let indexPath = NSIndexPath(forItem: dateIndex!, inSection: 0)
let cell = self.collectionView.dequeueReusableCellWithReuseIdentifier("DateCell", forIndexPath: indexPath) as! DateCell
cell.showProgress()
}
Функция находит indexPath для ячейки будет обновляться. Затем вызывается метод showProgress ячейки.
class DateCell: UICollectionViewCell {
@IBOutlet weak var dotGraph: DotGraphView!
func showProgress(){
print(" DateCell showProgress") // this does get printed
self.setNeedsDisplay()
}
override func drawRect(rect: CGRect) {
print(" DateCell drawRect") // this never gets printed
//drawing functions go here
}
}
Метод showProgress()
вызывается для правильной ячейки и отображается сообщение для печати. Однако, когда метод showProgress вызывает setNeedsDisplay()
, функция drawRect никогда не выполняется.
Единственный способ, которым я получил ячейку для обновления, - полностью перезагрузить ячейку, используя reloadRowsAtIndexPaths
, однако это не должно быть лишним.
Любые идеи о том, как получить функцию drawRect
?
Спасибо ... это был именно он. Я создал словарь для хранения ячеек, поэтому каждый раз, когда он был создан в CollectionView, ячейка будет сохранена. Затем, как было предложено, это просто вопрос вызова функции showProgress() для нужной ячейки. – Dustin
@ Rob Napier, я столкнулся с одной и той же проблемой, но у меня есть правильная ячейка, даже когда dequed beacause я вытаскиваю ее из списка видимых ячеек и сопоставляю с уникальным идентификатором (переменной в классе ячеек), также сопоставляя адреса, но все еще не работает. Можете ли вы PLZ взглянуть на это: https://stackoverflow.com/questions/48201925/custom-uicollectionview-cells-not-updating-when-switched-between-tabs – Rana