如果ImageView位于同一个View Controller中,我能够正常工作。但是我创建了一个自定义单元格.xib和一个模型类。所有数据(文本)似乎都在传输,甚至是Firebase数据库图像的URL,但图像没有变化,默认占位符图像正在显示。如果我没有设置默认的占位符图像,我会收到一个错误,说它是零。再次,所有单元格都填充来自Firebase的文本数据,唯一的不是来自的图像来自给定的URL。调试显示URL确实被传递到" profileImageURL"变量。以下是一些代码:
class Profile{
var name: String = ""
var age: String = ""
var profileImg : UIImageView! = UIImageView.init(image: "main"))
var description : String = ""
}
这是表视图控制器代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCellTableViewCell", for: indexPath) as! CustomCellTableViewCell
let profile = profileArray[indexPath.row]
// Configure the cell...
profileTableView.rowHeight = 300
cell.nameLbl.text = profile.name
cell.descriptionLbl.text = profile.description
cell.profileImage.image = UIImage(named: "main")
return cell
}
func retrievePosts(){
let dataRef = Database.database().reference()
let postsDB = dataRef.child("Messages")
postsDB.observe(.childAdded) { (snapshot) in
let value = snapshot.value as! Dictionary<String,String>
let text = value["postText"]!
let profileImgURL = value["postImage"]!
let userID = value["sender"]!
let url = NSURL(string:"\(profileImgURL)")
let profile = Profile()
profile.description = text
profile.name = name as! String
profile.profileImg.sd_setImage(with: URL(string:profileImgURL), placeholderImage: nil)
self.profileTableView.reloadData()
self.profileArray.insert(profile, at: 0)
})
}
here is the firebase data structure:
- Messages
-L4IkuSxWDnsiJvTKoo0
-postImage: "https://firebasestorage.googleapis.co......"
-postText: "Lorem ipsum dolor sit er elit lamet, consecteta..."
-sender: "C19ghii6OVPNnzJNYPvVJeKuoi73"
答案 0 :(得分:0)
烨!谢谢! App dev新手。就是这样。必须在Profile中创建一个新变量来保存url然后在cellForRowAt中设置带有该变量URL的Imageview。有可能更简单的方法,但为我工作!非常感谢! - 吉列尔莫·格列柯
答案 1 :(得分:-1)
它不是真正的解决方案,而是另一种选择:
使用翠鸟吊舱设置网址图片。
let url = URL(string: "https://example.com/image.jpg")!
imageView.kf.setImage(with: url)