Расширение UICollectionView для быстрого добавления пустой ячейки.

May 03 2023
Пример кода Swift Код В приведенном выше примере, если ячейка относится к неправильному классу, при отладке ошибка утверждения остановит приложение. Однако в рабочей среде, если ячейка имеет неправильный класс, будет возвращена пустая ячейка, и приложение продолжит работу.

Пример кода Swift

Код

final class FallbackBlankCollectionViewCell: UICollectionViewCell {}

extension UICollectionView {
    func blankCell(forIndexPath: IndexPath) -> UICollectionViewCell {
        register(FallbackBlankCollectionViewCell.self, forCellWithReuseIdentifier: "FallbackBlankCollectionViewCell")
        return dequeueReusableCell(withReuseIdentifier: "FallbackBlankCollectionViewCell", for: forIndexPath)
    }
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "LobbyCell", for: indexPath) as? LobbyCell {
            return cell
        } else {
            assertionFailure()
            return collectionView.blankCell(forIndexPath: indexPath)
        }
    }

В приведенном выше примере, если ячейка имеет неправильный класс, при отладке ошибка утверждения остановит приложение. Однако в рабочей среде, если ячейка имеет неправильный класс, будет возвращена пустая ячейка, и приложение продолжит работу.