如何将数组中的非静态图像加载到 Swift 中的 collection 视图中

How to load non static images from an array into collection view in Swift

我正在尝试从我的 firebase firestore 获取图像 URL'S 并将它们保存在数组中。

然后我想设置一个 collection 视图,以类似于 Instagram 的滑动方式(水平)显示数组中的图像。

我正在检索我的图像 url 的值并将它们保存在变量中,然后将它们设置在一个数组中,但是当我设置我的 collection 视图时它不起作用,我相信 collection 视图函数接收到具有空值的数组,因为我正在检索它们并将它们存储在视图中 did load 方法

我做错了什么?

有什么帮助吗?谢谢你。 这是我的代码:

public var imgArray = [URL]()
var getHeaderURL : URL!
var getHeaderURL2 : URL!
var getHeaderURL3: URL!
var getHeaderURL4: URL!

var headerImgURL:String!
var headerImgURL2:String!
var headerImgURL3:String!
var headerImgURL4:String!
override func viewDidLoad(){

db.collection("Shops").document(getKey!)
        .addSnapshotListener { [self] snapshot, error in
            if error != nil {
                print(error ?? "Couldn't update text field TextUser according to database")
            }
            else
            {
     
                //getting url's as strings
                self.headerImgURL = snapshot?["ShopHeaderImg"] as? String
                self.headerImgURL2 = snapshot?["ShopHeaderImg2"] as? String
                self.headerImgURL3 = snapshot?["ShopHeaderImg3"] as? String
                self.headerImgURL4 = snapshot?["ShopHeaderImg4"] as? String
            }
             //converting url strings into url type.
             getHeaderURL = URL(string: self.headerImgURL)
             getHeaderURL2 = URL(string: self.headerImgURL2)
             getHeaderURL3 = URL(string: self.headerImgURL3)
             getHeaderURL4 = URL(string: self.headerImgURL4)
            
             self.imgArray = [getHeaderURL!,getHeaderURL2!,getHeaderURL3!,getHeaderURL4!]
             print(imgArray)
  }

我的 collection 查看功能:

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    print(imgArray.count)
    print("this is the count of images")
    return imgArray.count
   
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = imageCollectionView.dequeueReusableCell(withReuseIdentifier: "imgCell", for: indexPath) as! ImageCellViewController
    
    
    cell.sliderImage.sd_setShowActivityIndicatorView(true)
    cell.sliderImage.sd_setIndicatorStyle(.gray)
    cell.sliderImage.sd_setImage(with: imgArray[indexPath.row], placeholderImage: UIImage(named: "Profile_avatar_placeholder_large"))
    
    return cell
}

在您填写的行 imgArray 之后调用集合视图中的 reloadData()