我很困惑如何将DownloadURL作为链接并将其转换为图像并将其添加到我的tableview单元格中?我的故事板中有一个imageview,不知道如何将它连接到tableview单元格。谢谢!
override func viewDidLoad() { super.viewDidLoad()
let ref = FIRDatabase.database().reference().child("Posts")
ref.observeSingleEvent(of: .value, with: { snapshot in
print(snapshot.childrenCount)
for rest in snapshot.children.allObjects as! [FIRDataSnapshot] {
guard let value = rest.value as? Dictionary<String,Any> else { continue }
guard let downloadURL = value["DownloadURL"] as? String else { continue }
let post = postStruct(title: title, date: date, author: author, article: article, downloadURL: downloadURL)
self.posts.append(post)
}
self.posts = self.posts.reversed(); self.tableView.reloadData()
})
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return posts.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
let label1 = cell?.viewWithTag(1) as! UILabel
label1.text = posts[indexPath.row].title
return cell!
}
答案 0 :(得分:2)
谷歌这个cocoapod:SDWebImage
使用它,这是不可思议的
夫特:
import SDWebImage
imageView.sd_setImage(with: URL(string: "url"), placeholderImage: UIImage(named: "placeholder.png"))
关于连接图像视图的第二个问题,您需要创建自定义单元格
答案 1 :(得分:1)
1)您需要使用image创建自定义单元格类,如下所示:
class MyCustomCell: UITableViewCell {
//...some vars?
@IBOutlet myImageView: UIImageView!
//...some vars?
}
2)为你table view
设置它。你可以在google,SO等中找到很多关于 1 和 2 的教程。示例:Add custom cells for tableView
3)安装KingFisher
以缓存图像。 Kingfisher。它会让你的tableview有平滑的滚动。 (注意:您可以使用任何模拟,如SDWebImage
)
安装:
您的pod文件中的1)
pod 'Kingfisher', '~> 3.0'
2)终端
中的pod install
3)你的swift-code文件中的
import Kingfisher
4)在table view
:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "myCustomCell", for: indexPath) as! MyCustomCell
let row = indexPath.row
// ...other vars?
let imageURL = URL(string: self.posts[row].downloadURL)
cell.myImageView.kf.setImage(with: imageURL) // Using kingfisher for caching and viewing.
// next time, when you will use image with this URL, it will be taken from cache.
// ...other vars?
return cell
}
希望有所帮助
答案 2 :(得分:0)
我认为您从firebase
firebase storage
下载图片网址。您需要在tableCell `
let imagesRef = FIRStorage.storage().reference()
let imageRef = self.imagesRef.child("imageName.jpg")
imageRef.downloadURL { url, error in
if let error = error {
} else {
DispatchQueue.main.async {
cell.imageView.kf.setImage(with: url)
}
}
}
`
firebase database
下载图片,这是因为您无法解决问题。