Swift - UICollectionView, нумерация страниц в пределах собственного размера - PullRequest
0 голосов
/ 07 января 2020

Я использую самодельный размер UITableViewCell, содержащий UICollectionView, который увеличивает его высоту на основе количества элементов, полученных из API.

Представления структурированы следующим образом

UITableView

    UITableViewCell

        UICollectionView

            UICollectionViewCell

            UICollectionViewCell

            UICollectionViewCell

Когда UICollectionView получает новые данные, кадр UITableViewCell обновляется следующим кодом

layoutIfNeeded()
collectionView.reloadData()
collectionView.collectionViewLayout.invalidateLayout()
collectionView.layoutIfNeeded()

collectionView.snp.updateConstraints { make in
    make.height.equalTo(collectionView.collectionViewLayout.collectionViewContentSize).priority(.high)
}

Проблематическая c часть добавляет пагинацию при прокрутке внизу UICollectionView. Код саморазмера вызывает, что willDisplay cell вызывается для каждой ячейки UICollectionView, вызывая запрос // Fetch more data, который вызывает новые данные, обновляет высоту UICollectionView, снова вызывая запрос API, и это бесконечное число l oop.

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
    if indexPath.item == collectionView.numberOfItems(inSection: indexPath.section) - 1 {
        // Fetch more data
    }
}

Есть идеи, как избежать этого цикла? Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...