UICollectionView не загружает новые ячейки при горизонтальной прокрутке - PullRequest
0 голосов
/ 27 сентября 2018

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

Код для горизонтальной прокрутки UICollectionViewController:

class BusinessPhotosViewController: UICollectionViewController, UICollectionViewDelegateFlowLayout{

    var photos = [String]()
    let cellId = "photos"

    override func viewDidLoad() {
        super.viewDidLoad()

        if let layout = collectionView?.collectionViewLayout as? UICollectionViewFlowLayout {
            layout.scrollDirection = .horizontal
            layout.minimumLineSpacing = 0
            layout.minimumInteritemSpacing = 0
        }

        collectionView?.backgroundColor = .red
        collectionView?.showsVerticalScrollIndicator = false
        collectionView?.showsHorizontalScrollIndicator = false
        collectionView?.alwaysBounceVertical = false
        collectionView?.isPagingEnabled = true
        collectionView?.isScrollEnabled = true

        collectionView?.register(BusinessPhotoCells.self, forCellWithReuseIdentifier: cellId)
    }

    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 10
    }

    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! BusinessPhotoCells

        if photos.count != 0 {
            let imageUrl = photos[indexPath.item]
            let url = URL(string: imageUrl)
            cell.logoImage.kf.setImage(with: url)
        }

        return cell
    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: view.frame.height-10, height: view.frame.height-10)
    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
        return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
    }

    override func numberOfSections(in collectionView: UICollectionView) -> Int {
        return 1
    }
}

В другом классе я добавляю эту горизонтальную прокрутку UICollectionViewController следующим образом:

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        //ADDING SCROLL CELL HERE
        if indexPath.section == 1 {
            let scrollCell = collectionView.dequeueReusableCell(withReuseIdentifier: pictureCellId, for: indexPath)

            scrollCell.backgroundColor = .blue

            let bizVC = BusinessPhotosViewController(collectionViewLayout: UICollectionViewFlowLayout())

            scrollCell.addSubview(bizVC.view)

            bizVC.view.anchor(top: scrollCell.topAnchor, left: scrollCell.leftAnchor, bottom: scrollCell.bottomAnchor, right: nil, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: scrollCell.frame.width, height: scrollCell.frame.height)

            return scrollCell
        }

        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: listCellId, for: indexPath) as! CouponCell


        return cell
    }

Редактировать: добавление numberOfItemsInSection perкомментарии

override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        if section == 0 {
            return 0
        }
        if section == 1 {
            return 1
        }

        return coupons.count
    }

Я возвращаю 1 для этого раздела, потому что мне нужна только 1 горизонтальная ячейка прокрутки ... Ниже этой горизонтальной ячейки прокрутки (в разделе 2) у меня есть список вертикальных ячеек прокрутки, которыеработать как положено.

Это приводит к чему-то подобному, когда загружаются только 3 квадрата, а не 10, как ожидалось:

enter image description here

РЕДАКТИРОВАТЬ: ДОБАВЛЕНИЕ ИЗОБРАЖЕНИЯ, КАК МОЖЕТ СМОТРЕТЬ СМОТРЕТЬ МОЙ ВИД enter image description here

...