gpt4 book ai didi

swift - 无法使用 firebase 在表格 View 单元格中显示图像

转载 作者:行者123 更新时间:2023-11-28 07:52:01 26 4
gpt4 key购买 nike

我无法在表格 View 单元格中使用 firebase 显示图像,我不知道为什么,因为我的代码似乎可以工作,但不在那里,有人可以帮助我吗?

注意:标签Works。我使用 cocoa touch 类创建了一个自定义单元格,然后我使用符号将其链接到单元格,如您所见。

import UIKit
import Firebase



class PlacesTableViewController: UIViewController,
UITableViewDataSource, UITableViewDelegate{
let ref = Database.database().reference()
var PlacesRef:DatabaseReference! = nil
var SelectedRef:DatabaseReference! = nil
let storage = Storage.storage()
var postdata:[String] = [String]()



@IBOutlet weak var tableview: UITableView!

override func viewDidLoad() {
super.viewDidLoad()


print("Here Variables")
print("Here translated Names")
PlacesRef = ref.child("Places")
let storageRef = self.storage.reference()
PlacesRef.observe(.value) { (snapshot) in
let postDict = snapshot.value as? [String : AnyObject] ?? [:]
if snapshot.exists() {
for a in ((snapshot.value as AnyObject).allKeys)!{
var now:String = ""
self.postdata.append(a as! String)

DispatchQueue.main.async{
self.tableview.reloadData()
}
}
} else {
print("we don't have that, add it to the DB now")
}

print(self.postdata) //add key to array
}
tableview.delegate = self
tableview.dataSource = self
}




func tableView(_ _tableView: UITableView, numberOfRowsInSection selection: Int) ->Int{
print(postdata)

return postdata.count
}


func tableView( _ tableview: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
let cell = tableview.dequeueReusableCell(withIdentifier: "cell") as! CustomTableViewCell
var image=UIImage()
let StorageRef = storage.reference()
let NationRef = StorageRef.child("Nations/\(postdata[indexPath.row]).jpg")
print("\(postdata[indexPath.row]).jpg")
NationRef.getData(maxSize: 1 * 1024 * 1024) { data, error in
if let error = error {
print(error)
} else {
// Data for "images/island.jpg" is returned
image = UIImage(data: data!)!
print("image downloaded!")
}
}



cell.DetailLabel.text = postdata[indexPath.row]
cell.DetailImage.image = image
return cell
}


}

最佳答案

让我们看看会发生什么

func tableView( _ tableview: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
let cell = tableview.dequeueReusableCell(withIdentifier: "cell") as! CustomTableViewCell
var image=UIImage()
let StorageRef = storage.reference()
let NationRef = StorageRef.child("Nations/\(postdata[indexPath.row]).jpg")

// HERE we starting async web request for image data (tag 1)

NationRef.getData(maxSize: 1 * 1024 * 1024) { data, error in
if let error = error {
print(error)
} else {
// HERE we getting image data from async request and storing it in image var (tag 3)
image = UIImage(data: data!)!
print("image downloaded!")
}
}

cell.DetailLabel.text = postdata[indexPath.row]

// HERE we setting UIImage to cell's imageView (tag 2)
cell.DetailImage.image = image
return cell
}

如果打印标签,我们将得到标签 1、标签 2 和标签 3。这意味着首先您创建空的 uiimage,然后将此图像设置为单元格的 imageView,最后您将图像更改为来自请求的图像(图像,而不是单元格的图片 View )

我认为答案可以是 - 将 image = UIImage(data: data!)! 替换为 cell.DetailImage.image = UIImage(data: data!)

还有很多方法可以改进这个方法

关于swift - 无法使用 firebase 在表格 View 单元格中显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49396562/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com