iOS 8 Swift UICollectionView reloadData()导致视图(图像)跳转单元格

iOS 8 Swift UICollectionView reloadData()导致视图(图像)跳转单元格,第1张

概述我有一个20个单元格的UICollectionView,里面有一个imageView.当用户点击正确的单元格时,我在该单元格中绘制另一个imageView(一个正确的圆圈让它调用它).这很好用. 但是我在UICollectionView中也有一个标题,我在那里问他们需要回答的问题.每次点击(等待2秒)后,问题应该更新,我有一个更新标题文本标签的功能,这也可以正常工作. 我的问题是: 为了更新Hea 我有一个20个单元格的UICollectionVIEw,里面有一个imageVIEw.当用户点击正确的单元格时,我在该单元格中绘制另一个imageVIEw(一个正确的圆圈让它调用它).这很好用.

但是我在UICollectionVIEw中也有一个标题,我在那里问他们需要回答的问题.每次点击(等待2秒)后,问题应该更新,我有一个更新标题文本标签的功能,这也可以正常工作.

我的问题是:@H_301_12@为了更新header文本,我必须调用uicollectionVIEw.reloadData(),每当我这样做时,我在单元格中绘制的UIImageVIEw(correctCircle)将被移动到另一个单元格!

我已经尝试了我能想到的一切,包括这个线程中的解决方案:@H_301_12@UICollectionView reloadData not functioning properly in iOS 7

但无法让它发挥作用.任何想法都非常受欢迎.理想情况下,我只刷新标题而不是其他细胞,但似乎没有办法做到这一点.

编辑:根据评论稍微改变代码,现在我在每个单元格中有2个图像,一个是隐藏的,然后我显示它,而不是在点击时添加一个imageVIEw.

这是一些相关的代码:

overrIDe func collectionVIEw(collectionVIEw: UICollectionVIEw,cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionVIEwCell {        let cell = collectionVIEw.dequeueReusableCellWithReuseIDentifIEr(reuseIDentifIEr,forIndexPath: indexPath) as CollectionVIEwIconCell            // bigIcon() just returns the animal's icon image        cell.icon.image = animalsArray[indexPath.row].bigIcon()        return cell    }overrIDe func collectionVIEw(collectionVIEw: UICollectionVIEw,dIDSelectItemAtIndexPath indexPath: NSIndexPath) {        // we cannot use a dequeueReusableCellWithReuseIDentifIEr,we need this        let cell = collectionVIEw.cellForItemAtIndexPath(indexPath) as CollectionVIEwIconCell        if currentAnimal == self.correctAnimal {            cell.circleimage.image = correctcircleimage            cell.circleimage.hIDden = false            correctAnswers++            // nextQuestion() simply loads the text that will go in the header.label            self.nextQuestion()            self.collectionVIEw!.reloadData()        } else {            self.answerCircle.image = UIImage(named: "wrongCircle")            self.answerCircle.sizetoFit()            cell.addSubvIEw(answerCircle)            self.nextQuestion()            self.collectionVIEw!.reloadData()        }            }

谢谢.

PS

阅读一些评论,也许我没有在新问题上正确设置标题的文本?我从教程中获得了所有这些代码,非常新的UICollectionVIEw所以请原谅我的无知,但是有更好的方法来刷新标题文本吗?我无法获取vIEwForSupplementaryElementOfKind函数之外的标题.

我应该解释一下,我有2个不同的imageVIEws,一个用于正确答案,一个用于错误答案,因为正确答案的循环应该保留,而错误答案的那个将在每个问题上删除并重复使用.

解决方法 您的问题不在显示的代码中,它位于代码中,在请求时返回单元格,特别是因为您没有通过设置两个图像视图的状态来完全更新它.因此,当单元格被重用时,它具有来自另一行的错误(旧)设置.

真的是数据模型和单元设计问题.单元格应始终具有2个图像视图,您应该根据需要进行显示或隐藏,并且需要从每个用户选择后更新的数据模型中确定,然后重新加载(只需更新单元格,而不是完全重新加载) ).

总结

以上是内存溢出为你收集整理的iOS 8 Swift UICollectionView reloadData()导致视图(图像)跳转单元格全部内容,希望文章能够帮你解决iOS 8 Swift UICollectionView reloadData()导致视图(图像)跳转单元格所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1077356.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存