是否可以在for循环中为我的图像视图设置图像?我目前从firebase数据库获取所有图像下载URL,并将它们保存在[[String:Any]]类型的字典中
在我的CollectionViewControllerFile的cellforItemAt方法内部我正在调用这样的for循环:
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! MyImageCell
for myurl in urlArray {
print("Hier kommt myURL \(myurl)")
let url = URL(string: myurl["url"] as! String)
cell.imageView?.sd_setImage(with: url, completed: nil)
}
cell.myLabel?.text = "test"
return cell
}
但这样只会显示最后一张图像5次。
我创建了一个自定义单元格并在此处为它创建了一个类:
class MyImageCell: UICollectionViewCell {
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var myLabel: UILabel!
}
我正在创建1节和每节5个项目。甚至可以在for循环中使用SDWebImage或者我做错了什么?
你需要
let item = urlArray[indexPath.row]
let url = URL(string: item["url"] as! String)
cell.imageView?.sd_setImage(with: url, completed: nil)
每次调用cellForItemAt
都会返回一个单元格,所以每当你最终将数组的最后一个url设置为imageView时,你也应该创建一个像
struct Root {
let url:URL
// add more properties
}
然后创建一个像它的数组
var myArray = [Root]()