iOS使用多个CollectionView重用同一单元格

iOS使用多个CollectionView重用同一单元格,ios,swift,xcode,Ios,Swift,Xcode,我不熟悉iOS编程,但从我使用Android的经验来看,我知道你可以为一个项目创建一个设计,可以在多个列表中重复使用,而无需创建副本 在iOS中,我一直在用UICollectionView尝试同样的方法 在我的视图中,我创建了三个水平UICollectionView(具有不同的数据集),它们依次使用自己的单元格(与其他单元格相同)。我不知道如何让其他两个集合使用第一个单元格,所以我不需要反复创建同一个单元格 使用XIB创建新的文件收集单元 在视图控制器中的“item at row for ind

我不熟悉iOS编程,但从我使用Android的经验来看,我知道你可以为一个项目创建一个设计,可以在多个列表中重复使用,而无需创建副本

在iOS中,我一直在用UICollectionView尝试同样的方法

在我的视图中,我创建了三个水平UICollectionView(具有不同的数据集),它们依次使用自己的单元格(与其他单元格相同)。我不知道如何让其他两个集合使用第一个单元格,所以我不需要反复创建同一个单元格

  • 使用XIB创建新的文件收集单元
  • 在视图控制器中的“item at row for index”委托方法中,初始化单元格并返回它
  • 现在,视图控制器中的任何集合视图都具有相同的单元格

  • 使用单个故事板无法实现这一点。如果要将Interface Builder(xml)文件用于布局,则应创建MyCell.xib文件,然后在该文件上拖动UICollectionViewCell并使用该xib。 然后,您应该将.xib文件与集合视图连接起来,如下所示:
    
    设nib=UINib(nibName:“MyCell”,bundle:nil)
    collectionView?.register(无,表示“MyCellReuseID”)
    
    现在你可以用手机了


    此外,您还可以在不创建.xib文件的情况下创建MyCell:UICollectionViewCell类,以编程方式在其上创建视图,然后调用
    collectionView?.register(MyCell.self,for:“MyCellReuseID”)

    函数
    collectionView(collectionView:UICollectionView,CellForItemIndexPath:NSIndexPath)->UICollectionViewCell
    您可以通知collectionview使用哪个单元格

    collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
     let cell:MyCell = collectionView.dequeueReusableCellWithReuseIdentifier("myCell", forIndexPath: indexPath) as! MyCell
    [...]
    }
    
    如果你已经定义了你的单元格,你可能会有类似的东西

     class MyCell: UICollectionViewCell{
        var Label: UILabel!
        var imageView: UIImageView!
    }
    
    因此,在函数
    collectionView(collectionView:UICollectionView,cellForItemAtIndexPath-indexPath:NSIndexPath)中,您需要通知collectionView使用哪个单元格

    collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
     let cell:MyCell = collectionView.dequeueReusableCellWithReuseIdentifier("myCell", forIndexPath: indexPath) as! MyCell
    [...]
    }
    
    别忘了先注册你的手机

    override func viewDidLoad() {        
            super.viewDidLoad()
            //do your stuff
            collectionView.delegate = self
            collectionView.dataSource = self
            collectionView.backgroundColor = UIColor.whiteColor()
            collectionView.registerClass(MyCell.self, forCellWithReuseIdentifier: "myCell")
    }
    

    通过将
    UICollectionViewCell
    作为基类来创建Swift类(CollectionViewCell)。执行此操作时,请选择创建nib选项

    然后创建一个视图控制器,并将集合视图添加到情节提要中,并在
    标识检查器中连接此自定义单元格类。基本上,您的结构需要如下所示


    如果您使用的是故事板,那么您需要创建3次原型单元,但您可以为每个单元使用相同的自定义类。您可以为单元使用xib,以便在每个集合视图中重新注册。很好!,你有我可以效仿的例子吗?link?@Oreex0查找“自定义UICollectionViewCell Xib Swift”,您应该会收到大量的问题或教程。其中一些可能在“旧Swift”中,但使用自动完成功能查找新版本的方法应该很容易,因为整个逻辑保持不变。如果你了解一点Objective-C,你也可以找到教程。点击这个链接获取完整的教程谢谢你的快速回复,我一直在玩这个,现在我在展开上得到了零。。在cell.label中,xib文件将我的类和“cell”作为标识符。在storyboard CollectionView中,我将单元格设置为相同的标识符和类。解决它时,使用了ised registerNib(UINib.init(nibname:“MyCell”,bundle:nil),forcell.:“MyCell\u identifier”)