无法检索要显示的选定图像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)
}

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实时数据库中提取图像URL(

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
}    
}

使用

vc?.name = images[indexPath.row].url

并使用SDWebImage 从服务器加载图像

最新更新