Я пытаюсь разместить более одного UICollectionView на моем ViewController, но только один UICollectionView работает на симуляции - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь создать ViewController с несколькими горизонтальными прокрутками. Для этого я решил использовать UICollectionViews. Однако, когда я имитирую свое приложение, появляется только UICollectionView, указанный в выражении else, представленном в коде ниже allDealsCollectionView.

.

Я попытался разместить операторы print, чтобы посмотреть, использовались ли какие-либо операторы if при запуске приложения. Тем не менее, единственное заявление, которое было напечатано, также пришло из другого оператора allDealsCollectionView. Я думаю, что это означает, что проблема возникает где-то в строке, создающей операторы if.

Ниже приведен фрагмент кода из моего расширения моего ViewController.

extension ViewController:UICollectionViewDelegate,UICollectionViewDataSource{
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    if collectionView == self.myFavoritesCollectionView{
        print(myEmptyArray.count)
       return myEmptyArray.count
    }
    else if collectionView == self.fastFoodCollectionView{
        return fastFoodArray.count
    }
    else if collectionView == self.DessertsCollectionView{
        return dessertsArray.count
    }
    else if collectionView == self.sitDownRestrauntsCollectionView{
        return sitDownArray.count
    }
    else if collectionView == self.otherThanFoodCollectionView{
        return otherArray.count
    }
    else {
        print(allDiscounts.list.count)

        return allDiscounts.list.count
    }
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    if collectionView == self.myFavoritesCollectionView {
    let cell1 = collectionView.dequeueReusableCell(withReuseIdentifier: "theLikes", for: indexPath) as? myLikesCollectionViewCell
    cell1?.companyLikedImage.image = UIImage(named: allDiscounts.list[myEmptyArray[indexPath.row]].imageName)
    cell1?.companyLikedName.text = allDiscounts.list[myEmptyArray[indexPath.row]].businessName
        print("collectionviewlikes")
    return cell1!
    }
    else if collectionView == self.fastFoodCollectionView {
        let cell2 = collectionView.dequeueReusableCell(withReuseIdentifier: "theFast", for: indexPath) as? FastFoodCollectionViewCell
        cell2?.fastCompanyLikedImage.image = UIImage(named: allDiscounts.list[fastFoodArray[indexPath.row]].imageName)
        cell2?.fastCompanyLikedName.text = allDiscounts.list[fastFoodArray[indexPath.row]].businessName
        print("collectionviewfast")
        return cell2!

    }
    else if collectionView == self.DessertsCollectionView {
        let cell3 =   collectionView.dequeueReusableCell(withReuseIdentifier: "theDesserts", for: indexPath) as? DessertsCollectionViewCell
        cell3?.dessertsCompanyLikedImage.image = UIImage(named: allDiscounts.list[dessertsArray[indexPath.row]].imageName)
        cell3?.dessertsCompanyLikedName.text = allDiscounts.list[dessertsArray[indexPath.row]].businessName
        print("collectionviewdesserts")
        return cell3!
    }
    else if collectionView == self.sitDownRestrauntsCollectionView {
        let cell4 = collectionView.dequeueReusableCell(withReuseIdentifier: "theSits", for: indexPath) as? sitDownCollectionViewCell
        cell4?.sitCompanyLikedImage.image = UIImage(named: allDiscounts.list[sitDownArray[indexPath.row]].imageName)
        cell4?.sitCompanyLikedName.text = allDiscounts.list[sitDownArray[indexPath.row]].businessName
        print("collectionviewsit")
        return cell4!
    }
    else if collectionView == self.otherThanFoodCollectionView {
        let cell5 = collectionView.dequeueReusableCell(withReuseIdentifier: "theOthers", for: indexPath) as? OtherCollectionViewCell
        cell5?.otherCompanyLikedImage.image = UIImage(named: allDiscounts.list[otherArray[indexPath.row]].imageName)
        cell5?.otherCompanyLikedName.text = allDiscounts.list[otherArray[indexPath.row]].businessName
        print("collectionviewother")
        return cell5!
    }
    else {
        let cell6 = collectionView.dequeueReusableCell(withReuseIdentifier: "allDeals", for: indexPath) as? allDealsCollectionViewCell
        cell6?.companyLikedImage1.image = UIImage(named: allDiscounts.list[indexPath.row].imageName)
        cell6?.companyLikedName1.text = allDiscounts.list[indexPath.row].businessName
        print("collectionviewall")
        return cell6!
    }
}


func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    if collectionView == self.myFavoritesCollectionView {
    // handle tap events
    ViewController.searchStruct.buttonTag = myEmptyArray[indexPath.row]
    performSegue(withIdentifier: "gotocompany1", sender: self)
    }
    else if collectionView == self.fastFoodCollectionView {
        ViewController.searchStruct.buttonTag = fastFoodArray[indexPath.row]
        performSegue(withIdentifier: "gotocompany1", sender: self)
    }
    else if collectionView == self.DessertsCollectionView {
        ViewController.searchStruct.buttonTag = dessertsArray[indexPath.row]
        performSegue(withIdentifier: "gotocompany1", sender: self)
    }
    else if collectionView == self.sitDownRestrauntsCollectionView {
        ViewController.searchStruct.buttonTag = sitDownArray[indexPath.row]
        performSegue(withIdentifier: "gotocompany1", sender: self)
    }
    else if collectionView == self.otherThanFoodCollectionView {
        ViewController.searchStruct.buttonTag = otherArray[indexPath.row]
        performSegue(withIdentifier: "gotocompany1", sender: self)
    }
    else {
        ViewController.searchStruct.buttonTag = indexPath.row
        performSegue(withIdentifier: "gotocompany1", sender: self)
    }
}

}

Если код запускается, должно быть 6 UICollectionViews, на котором все отображаются с разными изображениями и метками вместо того, которое уже работает, и 6, которые отображаются пустыми.

1 Ответ

0 голосов
/ 26 апреля 2019

Необходимо правильно проверить, равен ли текущий collectionView текущему классу

if collectionView.isEqual(DessertsCollectionView) {
   //current collectionView working
} 

Для DessertsCollectionView должен быть определен пользовательский класс.

...