此扩展在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
}
}
答案 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
如果您有任何疑问,请直接询问!我很乐意帮忙。