gpt4 book ai didi

xcode - 当我快速滚动时,collectionView 中的图像正在发生变化

转载 作者:行者123 更新时间:2023-11-30 10:04:03 27 4
gpt4 key购买 nike

当我快速滚动时,collectionView 中的图像正在发生变化

当滚动图像发生变化时我该怎么办?

来自 json 的数据:

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
{
let cell: CollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! CollectionViewCell
let mindata = (data[indexPath.row] as! NSDictionary)
cell.NameShow!.text = mindata["name"] as? String
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),
{
if let url = NSURL(string: (mindata["img"] as? String)!),
data = NSData(contentsOfURL: url)
{
dispatch_async(dispatch_get_main_queue(),
{
cell.img.image = UIImage(data: data)
})
}
})
}

最佳答案

您的代码不完整,所以我只能建议一些提示:

UITableView 和 UICollectionView 都使用重用技术,这意味着单元格在创建后就会从池中重用。

鉴于您所说的问题,看来您没有清理单元格,也没有将图像绑定(bind)到特定位置。

您可以根据自己的需要尝试:

  1. 子类 UICollectionViewCell,在 prepareReuse 中,您清理图像,因此单元格也被清理干净,如果您不关心顺序,您可以提供任何您喜欢的图像。

  2. 将图像与单元格的 indexPath 绑定(bind),这意味着您创建图像数组或使用某种索引标记图像。

例如在cellForItemAtIndexPath中,

func collectionView(_ collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
...
cell.img.image = imageArray[indexPath.row]
...
}

关于xcode - 当我快速滚动时,collectionView 中的图像正在发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37062513/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com