如何在UICollectionView Swift

时间:2016-06-15 18:34:56

标签: ios swift

此扩展在CollectionView中只提供一个UIImageView。如何显示更多图像,取决于照片阵列的大小。 Photos数组包含Url到images(String)的数组。

extension FlatViewController: UICollectionViewDataSource{
        func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
            return (flat.photos?.count)!
        }
        func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
            let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! CustomCollectionViewCell

            cell.imageView.loadImageFromURL(NSURL(string: flat.image!)!)
            return cell
        }
    }

2 个答案:

答案 0 :(得分:0)

您可以直接进入Interface Builder,并根据需要将ImageView elements的数量加到CollectionViewCell中。然后创建IBOutlets以引用ImageView中添加的CollectionViewController元素。然后在函数cellForItemAtIndexPath中插入每个IBOutlet ImageView's的每个图片网址。

这应该有效。

答案 1 :(得分:0)

UICollectionViewCell子类中,以编程方式根据照片数组的子阵列创建UIImageView。您可以通过设置两个协议并实现委托模式来执行此操作,其中FlatViewController是您的子类的委托。

协议看起来像这样:

protocol PhotoDelegate {

  var photos: [[NSURL]] { get set }

}

protocol HasPhotos {

  var delegate: PhotoDelegate! { get set }

}

委托模式允许您从子类访问photos数组。您应该设置出列的单元格变量的委托属性,并将其作为子类在cellForRowAtIndexPath中强制转换。像所以

let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "<Insert Identifier>", for: indexPath) as! Subclass
cell.delegate = self

如果您有任何疑问,请直接询问!我很乐意帮忙。