【发布时间】:2021-07-18 22:57:52
【问题描述】:
我有一个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)
}
DetailViewController:
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
}
}
【问题讨论】:
标签: arrays swift firebase firebase-realtime-database