Рассмотрим этот случай ниже и реализуем его,
var array = [1,2,3,4,5,6,7,8,9,10,11,12]
//Statcially you can slice them like this
var arr2 = array[0...2] {
didSet {
//reload your collection view
}
}
var arr3 = array[3...5]
var arr4 = array[6...8]
var arr5 = array[9...array.count - 1]
Выше вы вручную нарезали dataSource
для каждого UICollectionView
, но проблема в том, что это действительно рискованно и в конечном итоге может привести к Index Out of Range
сбой, поэтому мы динамически нарезаем массив через цикл, используя индекс каждого элемента в диапазоне +3 индекса, чтобы добавить к новому источнику данных UICollectionView
.
// loop thru the main array and slice it based on indexes
for(index, number) in array.enumerated() {
if 0...2 ~= index { // if in range
arr2.append(number)
} else
if index <= 5 {
arr3.append(number)
} else
if index <= 8 {
arr4.append(number)
} else
if index <= 11 {
arr5.append(number)
}
}
Наконец : в вашем numberOfItemsInSection
отметьте UICollectionView
и установите возвращаемый источник данных, например,
if collectionView = myMainCollectionView {
return arr3.count
}
И то же самое дляcellForItemAt
Heads Up : убедитесь, что ваши массивы источников данных изначально пусты,
let arr2: [Int] = [] {
didSet{
//reload your collectionView
}
}