Невозможно нажать CollectionViewCell, чтобы перейти к новому ViewController - PullRequest
0 голосов
/ 05 мая 2019

У меня есть два отдельных UICollectionViews в одном UIViewController.Каждый UICollectionView извлекает данные из двух разных массивов и отображает их правильно.Однако я не могу нажать на UICollectionViewCell, чтобы выполнить переход к другому UIViewController.

Я полагаю, что это как-то связано с моим оператором if-else, так как я получаю сообщение об ошибке "Никогда не будет выполнено".

Я попытался переместить код "didSelectItem indexPath"в различные разделы в операторе if-else, до и после.

import UIKit

class HomeViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {

@IBOutlet weak var categoriesCollectionView: UICollectionView!

@IBOutlet weak var popularCollectionView: UICollectionView!

let categories = [

    "Browse All Categories",
    "cat1",
    "cat2",
    "cat3",

    ]

let categoryImages: [UIImage] = [

    UIImage(named: "img1")!,
    UIImage(named: "img2")!,
    UIImage(named: "img2")!,

]

let browsePopular = [

    "pop1",
    "pop2",
    "pop3",

]

let popularImage: [UIImage] = [

    UIImage(named: "popImg1")!,
    UIImage(named: "popImg2")!,
    UIImage(named: "popImg3")!,

]

let browsePopularDescription = [

    "popDesc1",
    "popDesc2",
    "popDesc3"

]



override func viewDidLoad() {
    super.viewDidLoad()


    categoriesCollectionView.delegate = self
    categoriesCollectionView.dataSource = self

    popularCollectionView.delegate = self
    popularCollectionView.dataSource = self

// Я пыталсяперемещение кода didSelect в начале:

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        let name = categories[indexPath.row]
        let viewController = storyboard?.instantiateViewController(withIdentifier: name)
        self.navigationController?.pushViewController(viewController!,  animated: true)

    }
}



override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

// Начало представления коллекции категорий. Код

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

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    if collectionView==self.categoriesCollectionView{
        return categories.count

    }
    else{
        return browsePopular.count
    }
}

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

    if collectionView==self.categoriesCollectionView {


    let cell: CategoriesCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellBrowseAll", for: indexPath) as! CategoriesCollectionViewCell

    cell.categoriesCollectionViewImage.image = categoryImages[indexPath.item]


    return cell
    }

    else{

        let cell: PopularCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellPop1", for: indexPath) as! PopularCollectionViewCell

        cell.browsePopular.text = browsePopular[indexPath.row]
        cell.popularImage.image = popularImage[indexPath.row]
        cell.browsePopularDescription.text = browsePopularDescription[indexPath.row]

        return cell


    }

// Я попытался добавить код didSelect в конце, но получил предупреждениесообщение, которое гласит: «Никогда не будет выполнено»

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
       let name = categories[indexPath.row]
       let viewController = storyboard?.instantiateViewController(withIdentifier: name)
    self.navigationController?.pushViewController(viewController!,  animated: true)
   }

}

Ожидаемые результаты - пользователь щелкает UICollectionViewCell и переходит к новому UIViewController с

Фактические результаты - касание не распознано или код не выполнен

...