簡體   English   中英

iOS 8 Swift UICollectionView reloadData()導致視圖(圖像)跳轉單元格

[英]iOS 8 Swift UICollectionView reloadData() causing views (images) to jump cells

我有一個UICollectionView 20個細胞與imageView人里面。 當用戶點擊了正確的電池,我得出另一個imageView在該單元格(一個correctCircle讓我們稱呼它)。 這很好用。

但是我在UICollectionView中也有一個標題,我在那里問他們需要回答的問題。 每次點擊(等待2秒)后,問題應該更新,我有一個更新標題文本標簽的功能,這也可以正常工作。

我的問題是:為了更新Header文本,我必須調用uicollectionView.reloadData() ,每當我這樣做時,我在單元格中繪制的UIImageView (correctCircle)被移動到另一個單元格!

我已經嘗試了我能想到的一切,包括這個線程中的解決方案: UICollectionView reloadData在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個圖像視圖,您應該根據需要進行顯示或隱藏,並且需要從每個用戶選擇后更新的數據模型中確定,然后重新加載(只需更新單元格,而不是完全重新加載) )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM