Я обновляю свое приложение iOS из табличных представлений в коллекционные представления для поддержки опции «привязан к сетке». У меня есть два типа клеток. Тот, который больше подходит для вида типа tableView и занимает всю ширину экрана. Другая - это ячейка, которая больше подходит для сетки.
Я не могу использовать один и тот же тип ячейки для обеих, потому что ячейка типа tableView содержит намного больше горизонтальной информации, чем ячейка сетки.
У меня есть событие нажатия кнопки, которое будет циклически переключаться между моими типы ячеек, обновление макета и изменение идентификатора повторного использования ячейки соответствующим образом. Проблема в том, что все ячейки, которые уже были видны, не меняются на новый тип ячейки. Если я прокручиваю немного, начинают появляться новые типы ячеек.
Я предполагаю, что это как-то связано с функцией dequeue для collectionView, принимающей indexPath. Я могу явно перезагрузить эти ячейки, чтобы заставить их использовать новый тип, но это вызывает нежелательную анимацию, не говоря уже о том, что это похоже на взлом.
Как я могу динамически переключать типы ячеек?
Связано видео, демонстрирующее проблему.
https://imgur.com/1Q0Xu9S
Как видите, после замены ячеек они остаются, используя старый NIB (со всей дополнительной информацией). Но если я прокручиваю вниз, будет использоваться новый NIB.