我有一个包含自定义单元格的集合视图。我想通过从两个地方获取数据来填充带有图像的单元格。一个是默认图像数组,另一个是解析xml web services
后获取的数组。因此,最终的数组计数是默认数组计数和Web服务的数组计数的总和。
如何在cellForItemAt
集合视图方法中获取图像?
任何人都可以在这方面帮助我吗?
答案 0 :(得分:0)
设置
collectionView.delegate = nil
collectionView.dataSource = nil
直到您从xml web services
获取所有图片。当您获得所有数据后,就像您说的那样更新dataSource
数组
count = default array count + array count from web services
然后设置collectionView的delegate
和dataSource
。然后在
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell : UICollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "identifierCell", for: indexPath) as! UICollectionViewCell
/// Show Image Code here
let url : String = dataSource[indexPath.row]
if let _image = UIImage(named: url){
// This If Will Load the image if it save locally
} else {
// Image does not save locally, download image from URL
}
return cell
}
我已经更新了我的答案,请查看并告诉我您是否发现任何困难。 有一件事你可以使用SDWebImage第三方从URL下载图像。
答案 1 :(得分:0)
来自上述问题
let cell:SubCategoryCollectionViewCell = self.collectionview3.dequeueReusableCell(withReuseIdentifier: "Cell2", for: indexPath) as! SubCategoryCollectionViewCell
if defaultAnimalArray.count-1 >= indexPath.row{ // ex: 0...7
let item = defaultAnimalArray[indexPath.row]
cell.subThumbImg?.image = UIImage(named: item as! String)
}else{
//If now defaultAnimalArray.count = 8, indexPath = 8 , But array = 0...4, then,
let item = arrayFromAPI[indexPath.row-defaultAnimalArray.count] // 8-8 = 0
cell.subThumbImg?.image = UIImage(named: item as! String)
}
return cell
备选方案1: -
将defaultArray
声明为var
。
在return defautlArray.count+arrayFromAPI.count
之前合并图像数组。 i.e., defaultArray = defaultArray+arrayFromAPI
和返回变量变为return defaultArray.count
,并且没有变更cellForItemAtIndexPath
。
备选方案2:
将defaultArray
声明为var
,不要创建arrayFromAPI
。只需在defaultArray
XML Parsing
中添加新图片即可。附加新图片后reload
UICollectionView
并且返回变量变为return defaultArray.count
备选方案3:
使用相同的代码,item
上的cellForItemAtIndexPath
变为,
let item = defaultAnimalArray+arrayFromAPI[indexPath.row]