如何使这两个UICollectionViews出现在同一个View中?

时间:2015-06-23 15:08:00

标签: ios swift uicollectionview

我在一个视图中需要两个UICollectionViews

他们有两个不同的CollectionViewCell类。第一个CollectionView单元格类为ConfirmOffersCollectionViewCell,第二个为ConfirmRequestsCollectionViewCell

如果我将两个单元格设置为同一个类,我可以同时显示和CollectionViews,但它们显示相同的图像。我需要它们由两个独立的图像阵列填充。

我唯一知道的事情就是复制并粘贴我的func collectionView()代码并更改cellForItemAtIndexPathnumberOfItemsInSection属性。但我无法两次运行相同的功能。

以下是代码:

@IBOutlet weak var collectionView1: UICollectionView!

@IBOutlet weak var collectionView2: UICollectionView!




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

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let cell: ConfirmOffersCollectionViewCell = collectionView1.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! ConfirmOffersCollectionViewCell
    images1[indexPath.row].getDataInBackgroundWithBlock{
        (imageData: NSData?, error: NSError?) -> Void in
        if error == nil {
            let image = UIImage(data: imageData!)
            cell.image.image = image
        }
    }
    return cell
}




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

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let cell: ConfirmRequestsCollectionViewCell = collectionView2.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! ConfirmRequestsCollectionViewCell
    images2[indexPath.row].getDataInBackgroundWithBlock{
        (imageData: NSData?, error: NSError?) -> Void in
        if error == nil {
            let image = UIImage(data: imageData!)
            cell.image.image = image
        }
    }
    return cell
}

1 个答案:

答案 0 :(得分:1)

您无法在单个类中使用相同的功能。相反,您需要以某种方式识别每个集合视图(通过创建出口或给它们标记),然后在每个函数中检查collectionview参数并将其与集合视图进行比较。示例:

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    if collectionView = secondCollectionView{
       return images2.count
    }else{
       return images1.count
    }

}

此外,您还需要在cellForRowAtIndexPath同样检查