【发布时间】:2021-01-31 12:05:28
【问题描述】:
我以编程方式设置了一个集合视图,该视图应将来自 API 的图像显示到单元格上。但是,一旦显示单元格并调用数据,这些单元格就会保持空白。
Cells returning an empty image view
当前设置
override func viewDidLoad() {
super.viewDidLoad()
collectionView.register(ImageCell.self, forCellWithReuseIdentifier: imageCellId)
loadImageData(numberOfItems: numberOfItems)
}
func loadImageData(numberOfItems: Int) {
client.getImageData(items: numberOfItems, completion: { (error,data) in
if error != nil {
print("Error parsing image data")
} else {
self.per_page = data.perPage
self.total_results = data.totalResults
self.images = data.photos
for image in self.images {
self.userNameArray.append(image.photographer)
self.urlArray.append(image.url)
}
self.imageLinkArray = self.urlArray
DispatchQueue.main.async {
self.collectionView.reloadData()
}
}
})
}
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: imageCellId, for: indexPath) as! ImageCell
let imageString = String(imageLinkArray[indexPath.row])
let url = URL(string: imageString)
let data = try? Data(contentsOf: url!)
if let imageData = data {
let imageFromDatabase = UIImage(data: imageData)
cell.imageView.image = imageFromDatabase
}
return cell
}
试过了:
-
确保使用 cellForItemAt 中 url 常量的打印语句返回 URL。
-
我还使用占位符图像测试了单元格布局。
-
在 viewDidAppear() 中调用了 collectionView.reloadData()。
【问题讨论】:
标签: ios swift uicollectionview uikit