【问题标题】:reloadItemsAtIndexPath swift bug?reloadItemsAtIndexPath 快速错误?
【发布时间】:2016-03-28 13:44:31
【问题描述】:

当您单击相关的UICollectionViewCell 时,我有一些代码会增加分数。代码如下:

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
        teamScores[indexPath.row] += 1
        collectionView.reloadItemsAtIndexPaths([indexPath])
}

这最初工作正常,但是当我返回主屏幕并再次返回应用程序时,如果我再次尝试单击单元格,应用程序似乎会冻结。仔细观察,它似乎处于某种循环中,CPU 以 100% 的速度运行,所需的内存每秒都在增加。

请注意,如果我不是单击单元格而是执行其他操作,则据我所知没有问题。例外是一个重置按钮,它运行代码:

 @IBAction func resetScores(sender: AnyObject) {
        resetScores()
        collectionView.reloadSections(NSIndexSet(index: 0))
 }

这种“崩溃”只会在应用再次激活时发生 - 当您切换到另一个选项卡并再次返回时不会发生这种情况。

如果我用reloadData() 替换reloadItemsAtIndexPaths(...) 代码,问题就会消失。这是一个错误,还是我错过了什么?

非常感谢!

【问题讨论】:

    标签: swift memory collectionview


    【解决方案1】:

    您可以在选择单元格后尝试取消选择它,因为它仍处于选中状态。

    尝试添加:

    collectionView.deselectItemAtIndexPath(indexPath, animated : false)
    

    在你之后:

    teamScores[indexPath.row] += 1
    

    看看这是否能解决你的问题。

    --编辑--

    override func viewWillAppear() {
        super.viewWillAppear()
        collectionView.reloadData()
    }
    

    【讨论】:

    • 你能把这个方法添加到类中吗(见原帖的编辑)
    • 运气不好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 2023-03-17
    • 2021-10-01
    • 2017-07-30
    • 2016-02-23
    相关资源
    最近更新 更多