Как настроить, чтобы ячейка коллекционного представления начиналась с индекса '1', а не '0' - Swift - PullRequest
2 голосов
/ 12 июня 2019

У меня есть два пользовательских класса ячеек HomeCell & CreateCell.В идеале, первая ячейка должна быть CreateCell, а HomeCell's должна начинаться с индекса '1' (после первого создания ячейки), но в настоящее время CreateCell и первая HomeCell перекрываются.Есть ли способ, которым я могу установить HomeCell's для запуска с индексом '1'?

Если есть еще какой-то код, который необходимо предоставить, дайте мне знать.

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    if indexPath.row == 0 {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CreateCell", for: indexPath) as! CreateCell
        //configure your cell here...
        return cell
    } else {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "HomeCell", for: indexPath) as! HomeCell
        cell.list = lists[indexPath.item]
        //configure your cell with list
        return cell
    }
}

override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return lists.count
}

Ответы [ 2 ]

2 голосов
/ 12 июня 2019

Поскольку вы хотите получить доступ к 0-му элементу Списка по 1-му индексу, вам нужно будет немного изменить код в вашем cellForItemAt indexPath:

cell.list = lists[indexPath.item - 1]

, таким образом, вы начнете HomeCell просмотрено из 1-го индекса

Также вам нужно изменить количество элементов, поскольку есть дополнительная ячейка создания.

override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return lists.count+1
}
0 голосов
/ 12 июня 2019

Используйте indexPath.item вместо indexPath.row

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

    if indexPath.item == 0 {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CreateCell", for: indexPath) as! CreateCell
        //configure your cell here...
        return cell
    } else {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "HomeCell", for: indexPath) as! HomeCell
        cell.list = lists[indexPath.item]
        //configure your cell with list
        return cell
    }
}
...