Изображения в UIPageViewController повторяются в UICollectionView при каждом создании ячейки. Использование библиотеки для отображения изображений в scrollView - PullRequest
0 голосов
/ 04 июня 2019

У меня есть конкретная проблема, связанная с библиотекой, которую я использую для отображения изображений в UIPageViewController, которую я добавил в UICollectionView, , это библиотека , которую я использую, вся моя работа выполненасначала через эту библиотеку viewDidLoad, но проблема возникает, когда я прокручиваю вверх и вниз CollectionView, он продолжает повторять изображения в этом UIpageViewController, вот мой фрагмент кода, где у меня возникла проблема.

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

            let cell: FeedsCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "FeedsCollectionViewCell", for: indexPath) as! FeedsCollectionViewCell
            if postObject.contents.count > 0 {
                                for content in postObject.contents {
                cell.feedImageHeightConstaint.constant = 200
                cell.carouselViewHightContaint.constant = 200
                    let imageSlide = UIImageView()
                    let tap = UITapGestureRecognizer(target: self, action: #selector(showImage(_:)))
                    imageSlide.isUserInteractionEnabled = true
                    imageSlide.addGestureRecognizer(tap)
                    imageSlide.contentMode = UIView.ContentMode.scaleAspectFill
                    imageSlide.clipsToBounds = true
                    imageSlide.sd_setImage(with: URL(string: content.contentURL!), placeholderImage: nil) { [weak self](image, error, imageCacheType, url) in
                        guard let self = self else { return }
                        self.popUpFeedImage = image

                    }
                    cell.carouselView.appendContent(view: imageSlide) }
}

теперь я думаю, что знаю, что проблема в том, что в этой библиотеке есть только append функция, но эта функция не удаляет свои значения при создании нового объекта, я пытался это исправить, но я не смог этого добиться,поэтому я пишу, если здесь за любую помощь, которую я могу получить, был бы признателен.Для более подробного понимания моей проблемы, поделитесь gif ниже.

Images repeating

1 Ответ

0 голосов
/ 04 июня 2019

Я не совсем уверен, но я думаю, что ваша проблема в

cell.carouselView.appendContent(view: imageSlide)

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

Если я правильно читаю ваш код, попробуйте добавить добавление внутрь цикла, и это будет выглядеть так:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

        let cell: FeedsCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "FeedsCollectionViewCell", for: indexPath) as! FeedsCollectionViewCell
        if postObject.contents.count > 0 {
                            for content in postObject.contents {
            cell.feedImageHeightConstaint.constant = 200
            cell.carouselViewHightContaint.constant = 200
                let imageSlide = UIImageView()
                let tap = UITapGestureRecognizer(target: self, action: #selector(showImage(_:)))
                imageSlide.isUserInteractionEnabled = true
                imageSlide.addGestureRecognizer(tap)
                imageSlide.contentMode = UIView.ContentMode.scaleAspectFill
                imageSlide.clipsToBounds = true
                imageSlide.sd_setImage(with: URL(string: content.contentURL!), placeholderImage: nil) { [weak self](image, error, imageCacheType, url) in
                    guard let self = self else { return }
                    self.popUpFeedImage = image
                    cell.carouselView.appendContent(view: imageSlide)
                }
                     }
}
...