iOS UICollectionView переключает ячейку NIB динамически - PullRequest
0 голосов
/ 24 февраля 2020

Я обновляю свое приложение iOS из табличных представлений в коллекционные представления для поддержки опции «привязан к сетке». У меня есть два типа клеток. Тот, который больше подходит для вида типа tableView и занимает всю ширину экрана. Другая - это ячейка, которая больше подходит для сетки.

Я не могу использовать один и тот же тип ячейки для обеих, потому что ячейка типа tableView содержит намного больше горизонтальной информации, чем ячейка сетки.

У меня есть событие нажатия кнопки, которое будет циклически переключаться между моими типы ячеек, обновление макета и изменение идентификатора повторного использования ячейки соответствующим образом. Проблема в том, что все ячейки, которые уже были видны, не меняются на новый тип ячейки. Если я прокручиваю немного, начинают появляться новые типы ячеек.

Я предполагаю, что это как-то связано с функцией dequeue для collectionView, принимающей indexPath. Я могу явно перезагрузить эти ячейки, чтобы заставить их использовать новый тип, но это вызывает нежелательную анимацию, не говоря уже о том, что это похоже на взлом.

Как я могу динамически переключать типы ячеек?

Связано видео, демонстрирующее проблему.

https://imgur.com/1Q0Xu9S

Как видите, после замены ячеек они остаются, используя старый NIB (со всей дополнительной информацией). Но если я прокручиваю вниз, будет использоваться новый NIB.

1 Ответ

0 голосов
/ 24 февраля 2020

Для этого есть два решения: -

  1. Использовать два вида коллекции для каждого типа ячеек, скрывать и показывать соответствующий вид коллекции при нажатии кнопки.

  2. Удалите представление коллекции из супер-представления по нажатию кнопки, добавьте снова и перезагрузите

...