我正在使用Firebase和Swift 4。
图片是从Firebase下载的,但我无法弄清楚如何将下载的图片插入到表格视图的数组中。此代码将相同的图像返回到每个数组中。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? NewsTableViewCell
let news: NewsList
news = newsRows[indexPath.row]
cell?.newsTitle.text = news.title
cell?.newsDate.text = news.date
let URL = self.newsImageReference
print("abc")
print(URL)
let storage = Storage.storage()
let storageRef = storage.reference(forURL: URL)
storageRef.downloadURL(completion: { (url, error) in
let data = try! Data(contentsOf: url!)
let imageDownloaded = UIImage(data: data as Data)
cell?.newsImg.image = imageDownloaded
// should be
//cell?.newsImg = news.photo
})
答案 0 :(得分:0)
只需创建一个数组,例如customImages.append(UIImage(named: "image.png")!)
然后添加let imageDownloaded = UIImage(data: data as Data)
customImages.append(imageDownloaded)
或
cell?.newsImg = customImages[indexPath.row]
in storageRef.downloadURL Closure
然后Object.keys(yourObject)
如果你有一个单元格的图像可以单元格吗?.newsImg = customImages [0]
答案 1 :(得分:0)
现在,您可以使用 SDWebImage 而不是每次通过创建新的存储参考实例来下载每个图像,它是下载从< strong>远程URLs ,因为它会将下载的图像存储到缓存内存中,因此我们不需要在每次 tableview单元重新加载时都下载图像。因此,如下修改您的 cellForRowAt indexPath:方法:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? NewsTableViewCell
let news: NewsList
news = newsRows[indexPath.row]
cell?.newsTitle.text = news.title
cell?.newsDate.text = news.date
let imgURL = news.imgUrl
cell?.newsImg.sd_setImage(with: imgURL) { (image, error, imgCacheType, url) in
cell?.newsImg.image = image
}
}