0

У меня есть UICollectionView, у которого dataSource поддерживается NSFetchedResultsController.UICollectionView ячейки скрыты после контроллераDidChangeContent

Ячейки иногда скрываются после изменения содержимого. Они остаются в качестве подземелий вида коллекции, но isHidden == true. Ни один из моих кодов явно не скрывает ячейки, а наблюдатель свойств для isHidden никогда не срабатывает.

ПОДСКАЗКА: наш код действительно есть случай катапультирование, где он может изменить основные данные в cellForItem... или willDisplayCell

ответ

0

Проблема заключается в том, что были времена, когда мы попытаемся построить клетку испрашивается, терпят неудачу, и измените CoreData перед возвратом резервной версии ячейки.

cellForItem или willDisplayCell работают на основном потоке, и мы использовали performWithBlockAndWait для изменения CoreData.

Это привело к изменению вида коллекции dataSource на основной поток, в то время как просмотр коллекции все еще обновлял ячейки.

Простым решением было использовать performWithBlock вместо performWithBlockAndWait. Теперь представление коллекции имеет возможность закончить обновление до изменения модели данных.

Лучшим решением было бы сделать такой отказ невозможным к моменту получения cellForItem или willDisplayCell.

Смежные вопросы