Разделите количество клеток между двумя прототипами - PullRequest
0 голосов
/ 22 мая 2019

, поскольку я новичок, у меня есть проблема, которая может быть не настолько про, чтобы спросить.У меня есть две ячейки представления коллекции прототипов в моем приложении, давайте назовем их Cell1 и Cell2, они оба находятся в одном разделе.

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell1", for: indexPath) as? customCell {
        return cell
    } else if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell2", for: indexPath) as? customCell {
        return cell
    }
    return UICollectionViewCell()
}

Мои проблемы начинаются отсюда: в numberOfItemsInSection,Например, я хочу нарисовать 3 ячейки из прототипа Cell1 и 5 ячеек из Cell2.Я не знаю, как я делю количество клеток между двумя прототипами, кто-нибудь может мне помочь в этом?

Ответы [ 2 ]

1 голос
/ 23 мая 2019

Можно попробовать

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

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

    if (0...2).contains(indexPath.item) { 
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell1", for: indexPath) as! customCell {
        return cell 
    } else { 
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell2", for: indexPath) as? customCell {
        return cell
    }

}
0 голосов
/ 23 мая 2019

у вас есть несколько вариантов для этого. Если вы знаете, сколько у вас будет клеток, скажем, 8, вы можете просто переключиться.

switch indexPath.item {
    case 0,1,2,3:
         let cell = .....
         return cell
     case 4,5,6,7:
         let cell2 = ....
          return cell
     default:
          let cell = ...
          return cell
}

Вы также можете использовать подход по модулю, который даст вам cell1 для четных номеров элементов и cell2 для неравномерных. Не зная ваших намерений напрямую, я могу дать вам только широкий ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...