如何将数组中的非静态图像加载到 Swift 中的集合视图中
Posted
技术标签:
【中文标题】如何将数组中的非静态图像加载到 Swift 中的集合视图中【英文标题】:How to load non static images from an array into collection view in Swift 【发布时间】:2020-09-29 20:05:44 【问题描述】:我正在尝试从我的 firebase firestore 获取图像 URL 并将它们保存在一个数组中。
然后我想设置一个集合视图,以类似于 Instagram(水平)的滑动方式显示数组中的图像。
我正在检索我的图像 url 的值并将它们保存在变量中,然后将它们设置在一个数组中,但是当我设置我的集合视图时它不起作用,我相信集合视图函数接收到的数组为空值,因为我在视图中检索并存储它们确实加载方法
我做错了什么?
对此有什么帮助吗?谢谢你。 这是我的代码:
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)
我的收藏视图函数:
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
【问题讨论】:
你为collectionView设置数据源了吗?你也应该调用 super.viewDidLoad() 什么时候重新加载集合视图?请使用array
而不是硬编码变量。
@MishaVyrko 是的,我做了,但我没有包含在问题中以使其更易于理解,甚至 super.view 确实 load 包含在我的代码中但忘记包含在问题中。跨度>
@Rob 当我重新加载集合视图时,它给我一个错误,说“sliderimage 不符合编码标准”。
【参考方案1】:
在您填写 imgArray
的行之后,在您的收藏视图中调用 reloadData()
。
【讨论】:
以上是关于如何将数组中的非静态图像加载到 Swift 中的集合视图中的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 swift 将 Images.xcassets 中的图像加载到 UIImage 中
如何使用 swift 将 Images.xcassets 中的图像加载到 UIImage 中