tableViewCell内でグリッド(collectionView)を実行しましたが、問題はセルごとに異なる画像をロードしています。このようにJSONを行いますTableViewCell内でcollectionViewの画像を非同期でダウンロードするには?
{
{
"name": "Vegetales"
"images": { imagesURLStrings }
},
{
"name": "Frutas"
"images": { imagesURLStrings }
},
}
私は非同期のダウンロードを行うために、カスタムのビューやthis otherをthis pageを使用しています。
私は、tableviewCell内のcollectionViewのセル数を定義しようとすると、その割り当てが間違っていること、動作していないこと、修正方法がわからないことが原因だと思います。
ダウンロード用コード画像:
func loadImages() {
var section = 0
var row = 0
while (section < searchDataresults.count) {
for i in searchDataresults[section].images {
let key = section * 10 + row
let imageUrl = i
let url:URL! = URL(string: imageUrl)
task = session.downloadTask(with: url, completionHandler: { (location, response, error) -> Void in
if let data = try? Data(contentsOf: url){
// 4
DispatchQueue.main.async(execute: {() -> Void in
// 5
// Before we assign the image, check whether the current cell is visible
let img:UIImage! = UIImage(data: data)
saveImage(image: img, name: String(key))
})
}
})
task.resume()
row += 1
}
section += 1
row = 0
}
}
}
そしてコードは、私はそれがtableViewCell内であることを思い出して、collectionViewに画像を入れていたので、細胞の量がする必要はありjsonのimages.countに応じて変更します。
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return searchDataresults[cellLoad].images.count
}
internal func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellImage", for: indexPath as IndexPath)
let key = cellLoad * 10 + indexPath.row
if let img = loadImage(name: String(key)) {
let imageView = UIImageView(image: img)
imageView.frame = cell.frame
imageView.bounds = cell.bounds
imageView.center = cell.center
cell.contentView.addSubview(imageView)
print(key)
} else {
let imageView = UIImageView(image: UIImage(named: "emptyImg"))
imageView.frame = cell.frame
imageView.bounds = cell.bounds
imageView.center = cell.center
cell.contentView.addSubview(imageView)
}
return cell
}
本当にありがとうございます。
http://stackoverflow.com/a/27712427/2303865 –
はすでにそれをやったのではなく、仕事: '(@LeoDabus – AnaMM