arrays - 无法检索要显示的选定图像 URL - Firebase / Swift
问题描述
我有一个collectionview,想让用户点击一个图像,将他们带到另一个具有该图像但更大的视图控制器。问题是图像没有加载到新的视图控制器上。我不确定问题是什么。如果有人可以帮助我,我将不胜感激。谢谢!
可变图像:
var images = [UserImages]()
didSelectItemAt 集合视图:
func collectionView(_ imageCollection: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let vc = storyboard?.instantiateViewController(withIdentifier: "DetailViewController") as? DetailViewController
vc?.name = images[indexPath.row] // Issue: 'Cannot assign value of type 'UserImages' to type 'String'
self.navigationController?.pushViewController(vc!, animated: true)
}
细节视图控制器:
class DetailViewController: UIViewController {
@IBOutlet weak var img: UIImageView!
var name = ""
var dbRef: DatabaseReference!
override func viewDidLoad() {
super.viewDidLoad()
dbRef = Database.database().reference().child("users/\(Auth.auth().currentUser!.uid)/Images/\("name")")
loadDB()
}
func loadDB() {
dbRef.observe(DataEventType.value, with: { (snapshot) in
var newImages = [UserImages]()
for UserImagesSnapshot in snapshot.children {
let UserImagesObject = UserImages(snapshot: UserImagesSnapshot as! DataSnapshot)
newImages.append(UserImagesObject)
}
DispatchQueue.main.async {
self.img.image = UIImage(named: self.name)
}
})
}
}
UserImages(用于从 firebase 实时数据库中提取 imageURL)
struct UserImages {
let key: String!
let url: String!
let itemsRef: DatabaseReference!
init (url:String, key:String) {
self.key = key
self.url = url
self.itemsRef = nil
}
init(snapshot: DataSnapshot) {
key = snapshot.key
itemsRef = snapshot.ref
url = snapshot.value as? String
}
}
解决方案
推荐阅读
- shell - 如何在 sh 中使用 `< <(tail ...)` 而不是 bash?
- python - 如何在 pandas DataFrame 中使用两种不同的方式来索引同一轴
- javascript - 网页的动态内容未完全使用 Htmlunit WebClient 加载
- java - 如何验证随机数生成并提供计算
- odoo - Odoo 9.0 电子邮件通知不会自动触发
- node.js - 为什么我在收到 409 响应时无法读取消息或状态码?
- c# - .NET Core DI,为包注册一个默认实现
- c# - cSharp编程,.net框架
- java - 在 try catch 块之外使用变量(Java)
- sql - ISnull 函数需要两个参数