Я начну с объяснения того, как все должно работать:
У меня есть представление коллекции с композиционным макетом и источником данных, доступным для диффузии.
Ячейки представляют задачи, на которые пользователь может щелкнуть и на сегодня установлено, что ячейки имеют различный внешний вид, в зависимости от того, установлено ли оно как выполненное или нет, и ячейка проверяет CoreData, чтобы выяснить, сделано это или нет.
Теперь я попытался реализовать идею о том, что задачи выполняются для день go в нижней части обзора, так что наверху находятся только те, которые еще предстоит сделать. Для этого я настроил дескриптор сортировки для своего запроса на выборку.
До этого момента все работало, как и ожидалось, но я хотел, чтобы эта ячейка двигалась вниз анимированно, поэтому я изменил dataSource.apply(snapshot, animatingDifferences: false)
на true
Теперь его анимированные, но ячейки не меняют внешний вид, когда установлено, как сделано.
Вот мой метод setupSnapshot ():
func setupSnapshot() {
snapshot = NSDiffableDataSourceSnapshot<Section, Task>()
snapshot.appendSections([.main])
snapshot.appendItems(fetchedResultsController.fetchedObjects ?? [])
dataSource.apply(snapshot, animatingDifferences: true)
}
Посмотрите: animatedDifferences: false (слева) ) и верно (справа)
В качестве резюме, моя цель состоит в том, чтобы:
1) анимированные ячейки и 2) изменили внешний вид, когда установлено, как сделано. Кажется, что с animatedDifferences: false
у меня может быть только цель 2 , а с animatedDifferences: true
может быть только цель 1
Я пытался исследовать эту топи c уже и нашел кое-что о применении снимка дважды, один раз для разделов и один раз для элементов, но это не имело никакого значения.
Кто-нибудь может указать, что мне здесь не хватает?