gpt4 book ai didi

Swift - UICollectionView 重复(复制)单元格

转载 作者:搜寻专家 更新时间:2023-10-31 19:31:38 25 4
gpt4 key购买 nike

您好,我有一个数组,其中包含从 flickr 获取的 100 张图片 url。当我使用 UICollectionView 时,我显示 100 个单元格,屏幕上只有 8 个单元格,当我向下滚动查看下一个 8 个单元格时,它们与前一个相同,当我执行

func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell!

和 println("something") 它只在控制台中写入 8 次,但数组的内容是 100

我用这个:

func collectionView(collectionView: UICollectionView?, numberOfItemsInSection section: Int) -> Int {
return self.photosUrls.count
}

它产生了 100 个细胞,但细胞总是重复......有人知道如何在新版本的 XCode GM 种子中击败 Swift 吗?

func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell! {
let cell: ImageCell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as ImageCell
let imgUrl = photosUrls[indexPath!.row]
let api_url = NSURL.URLWithString(imgUrl)
let URLReq = NSURLRequest(URL: api_url)
let NSOpQ:NSOperationQueue = NSOperationQueue()
NSURLConnection.sendAsynchronousRequest(URLReq, queue: NSOpQ, completionHandler:{ (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
if(error == nil){
cell.theWPImage!.image = UIImage(data: data)
}
})
return cell
}

最佳答案

我认为您不了解 UITableViewUICollectionView 委托(delegate)方法的工作原理。

iOS 不会同时加载 100 个单元格,因为这样会很慢并且用户体验不好。因此,方法 cellForItemAtIndexPathcellForRowAtIndexPath 仅在单元格出现在屏幕上时被调用。

无论何时向下滚动,您都会看到方法 cellForItemAtIndexPath 被再次调用以生成新单元格。如果将代码 println(indexPath.row) 放在 cellForItemAtIndexPath 中,您实际上会看到在向上或向下滚动时重复打印单元格编号。

如果您在向下滚动后看到相同的单元格,这可能是由于您在 cellForItemAtIndexPath 上的代码所致。除非您粘贴上面的完整源代码,否则我无法帮助您。或者它可能是 XCode GM 种子的 UICollectionView 中的错误。

在 XCode 6 Beta 7 中尝试相同的项目并报告如何?我在 XCode GM 中也遇到了 UICollectionView 的问题。 IT 与约束有关。请参阅:iOS 8 GM does not update constraints on collection views因此,我现在正在使用 XCode 6 Beta 7。

关于Swift - UICollectionView 重复(复制)单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25771795/

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