UICollectionView将第一个单元格设置为始终为特定内容

时间:2016-01-11 03:03:10

标签: swift uicollectionview uicollectionviewcell uicollectionviewlayout

您好,我使用侧滚动UICollectionView来显示用户制作的人群。这些组存储在我的服务器上,当视图加载时,它们从服务器加载。但是我希望第一个单元格始终相同,这是一个允许您创建组的单元格。这是我需要的布局。

enter image description here

我知道如何使用多个不同的自定义单元格,但是我如何制作它以使第一个单元格是静态的,并且从我的服务器加载内容后的单元格?谢谢:))

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

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

    if indexPath.row == 0 {
    let cell : AddGroupCollectionViewCell = collectionViewOutlet.dequeueReusableCellWithReuseIdentifier("Add", forIndexPath: indexPath) as! AddGroupCollectionViewCell

    return cell

    } else {

    let cell : FriendGroupsCell = collectionViewOutlet.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! FriendGroupsCell


    cell.groupImage.image = UIImage(named: "pp")
    cell.groupNameLabel.text = familyName[indexPath.row]

    return cell
    }
}

这是我的代码,它错过了数组中的第一个人,因为索引路径跳过了它。我该如何修改它以便它可以工作

1 个答案:

答案 0 :(得分:2)

UICollectionViewCell正在利用重用技术来提高性能。记住这一点。在单元格中没有任何东西可以是静态的,因为这个单元格稍后会在另一个索引上。

您可以使用collectionView:cellForItemAtIndexPath:使第一个单元格始终通过indexPath.row == 0加载相同的图片/标签

您可以使用prepareReuse方法清理单元格中的资源。因此,如果2号单元格成为新的No.1单元格,它就有机会清理旧资源。

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let cell : AddGroupCollectionViewCell = collectionViewOutlet.dequeueReusableCellWithReuseIdentifier("Add", forIndexPath: indexPath) as! AddGroupCollectionViewCell
    if indexPath.row == 0 {
        cell.groupImage.image = UIImage(named: "new")
        cell.groupNameLabel.text = "new"
    } else {
        cell.groupImage.image = UIImage(named: "pp")
        cell.groupNameLabel.text = familyName[indexPath.row]
    }
    return cell
}