Похоже, вы не установили делегатов / источники данных, назначенные каждому из представлений вашей коллекции.
С вашей точки зрения, нагрузка подключила делегат и источник данных к каждому представлению вашей коллекции.
self.mycollectionView1.delegate = self
self.mycollectionView1.datasource = self
self.mycollectionView2.delegate = self
self.mycollectionView2.datasource = self
self.mycollectionView3.delegate = self
self.mycollectionView3.datasource = self
Вы также можете установить делегатов и источники данных через раскадровку. Вы можете выбрать каждый collectionView и Ctrl + перетащить на ваш ViewController НЕ ВИД! ![enter image description here](https://i.stack.imgur.com/d2GKc.png)
Обратите внимание на выделенную часть на изображении выше. Это указывает на ваш viewController. Ctrl + перетащите каждое представление коллекции в эту точку и щелкните делегат и источник данных
EDIT -----
Вместо использования оператора switch, как вы это сделали здесь
switch collectionView {
case monkeyCV:
let monkeyCell = monkeyCV.dequeueReusableCell(withReuseIdentifier: "monkeyCell", for: indexPath) as! ImageCollectionViewCell
monkeyCell.backgroundColor = UIColor.systemOrange
monkeyCell.data = monkeyImages[indexPath.row]
return monkeyCell
case beachCV:
let beachCell = beachCV.dequeueReusableCell(withReuseIdentifier: "beachCell", for: indexPath) as! ImageCollectionViewCell
beachCell.backgroundColor = UIColor.systemBlue
beachCell.data = beachImages[indexPath.row]
return beachCell
default:
let perspectiveCell = perspectiveCV.dequeueReusableCell(withReuseIdentifier: "perspectiveCell", for: indexPath) as! ImageCollectionViewCell
perspectiveCell.backgroundColor = UIColor.systemRed
perspectiveCell.data = perspectiveImages[indexPath.row]
return perspectiveCell
}
Попробуйте установить свои клетки так:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)-> UICollectionViewCell {
let cell = myCollectionView1.dequeueResuableCell(withReuseIdentifier: "myIdentifier", for: indexPath) as! mycustomCellClass
cell.backgroundColor = UIColor.systemOrange
return cell
if collectionView == mycollectionView2 {
let cell2 = mycollectionView2.dequeueResuableCell(withReuseIdentifier: "myIdentifier2", for: indexPath) as! mycustomCellClass
cell2.backgroundColor = UIColor.systemBlue
}
}
И так далее. Вам также может понадобиться изменить функцию numberOfItemsInSection, чтобы заменить эту инструкцию switch.
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
switch collectionView {
case monkeyCV:
return monkeyImages.count
case beachCV:
return beachImages.count
default:
return perspectiveImages.count
}
}
Сверху измените его на ниже
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if (collectionView == mycollectionView1 {
return monkeyImages.count
} else if (collectionView == myCollectionView2 {
return beachImages.count
} else {
//this is your final collectionview
return persepctiveImages.count
}
}
РЕДАКТИРОВАТЬ 2 -----------
Попробуйте удалить sizeForItemAt
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: collectionView.frame.width * 0.8, height: collectionView.frame.width * 0.8)
}
Go на свою раскадровку и физически перетащите нужный размер ячейки. На правой панели внутри инспектора размера убедитесь, что для параметра «Оценить размер» задано значение «Нет».
Также вы можете попробовать это.
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: (collectionView.frame.size.width/3), height: collectionView.frame.size.height)
}
Деление на 3 дает три ячейки.