我有一个 collectionView,我有两个问题。首先,滚动太滞后。我的 collectionView 从 url 中的 API 接收数据,如下所示:
这是我的代码:
extension ViewController: UICollectionViewDelegate, UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if imageUrl.count >= 4 {
activity.stopAnimating()
activity.isHidden = true
}else{
DispatchQueue.main.async {
self.myCollectionView.reloadData()
}
}
return imageUrl.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = myCollectionView.dequeueReusableCell(withReuseIdentifier: "myViewCell", for: indexPath) as! myViewCell
if let url = NSURL(string: imageUrl[indexPath.row]){
if let data = NSData(contentsOf: url as URL){
cell.carImageView.contentMode = UIViewContentMode.scaleAspectFit
cell.carImageView.image = UIImage(data: data as Data)
}
}
cell.firstLabel.text = firstLabelArray[indexPath.row]
if secondLabelArray != []{
cell.secondLabel.text = secondLabelArray[indexPath.row]
}
return cell
}
}
我遇到的第二个问题是我只需要刷新集合 View 中的第三个单元格。那是我的第二个标签,但是当我尝试使用
myCollectionView.reloadData()
重新加载我的所有单元格时。我需要每秒刷新第三个单元格。 最佳答案
collectionView 中滞后的问题可能是你使用 NSData 的方式,考虑使用 Alamofire Image,像这样
if imageUrl.count > 0 {
let eachImage = imageUrl[indexPath.row]
Alamofire.request(eachImage).responseImage(completionHandler: {(response) in
print("answer\(response)")
if let image = response.result.value{
DispatchQueue.main.async {
cell.ImageView.image = image
}
}
})
}
关于ios - 如何在 collectionView 中仅重新加载一个单元格?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53088649/