如何以编程方式在uicollectionview中返回两个不同单元格的单元格数

时间:2018-04-27 13:44:24

标签: ios swift uicollectionview uicollectionviewcell xcode9

我目前正在开发一个项目,我有一个CollectionViewController并注册了多个单元格。我需要帮助返回我希望为每个单元格显示的单元格数。

例如我已注册:

build_backend:
  stage: build
  except: [ tags ]
  script:
    - echo CI_PROJECT_ID=$CI_PROJECT_ID
    - echo KUBE_URL=$KUBE_URL
    - echo KUBE_CA_PEM_FILE=$KUBE_CA_PEM_FILE
    - echo KUBE_TOKEN=$KUBE_TOKEN
    - echo KUBE_NAMESPACE=$KUBE_NAMESPACE
    - echo KUBE_CA_PEM=$KUBE_CA_PEM
    - echo KUBECONFIG=$KUBECONFIG

正如您所看到的,我已经注册了两个单元格。如何以编程方式返回7个照片单元格和4个文章单元格以显示在我的集合视图中?

    collectionView?.register(PhotoCell.self, forCellWithReuseIdentifier: picCell)

    collectionView?.register(ArticleCell.self, forCellWithReuseIdentifier: articleCell)

截至目前,我只能成功返回7个光电池。

2 个答案:

答案 0 :(得分:0)

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

 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
      let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! PhotoCell //Default will never Execute  
    if data == photo (
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! PhotoCell
        return cell )
    else if data == article {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! articleCell
        return cell
    }
    return cell

    }

使用此方法确定细胞类型。在这里你的数据如果它的音频比那个单元格的使用,如果它的文章比其他单元格将被使用并且计数返回将是总数据计数。

答案 1 :(得分:0)

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

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
    if (indexPath.row < 7)
    {
        if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: picCell, for: indexPath) as? PhotoCell
        {
            //your code here
            return cell
        }
    }

    else if (indexPath.row > 6)
    {

        //if indexing is needed create new index starting at 0
        let articeCellindex = indexPath.row - 7

        if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: articleCell, for: indexPath) as? ArticleCell
        {
            return cell
        }
    }

    else
    {
        return UICollectionViewCell()
    }



}

Amey的答案很好,但他们忽略了如何以某种方式构建您的单元格数据,以便两种单元格类型都包含在一个结构中。另一种方法是明确说明哪些行将显示单元格数据。确保picCell和articleCell重用标识符都指向同一个单元格。