У меня есть два отдельных 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 с
Фактические результаты - касание не распознано или код не выполнен