[英]Swift 2 reloadData adds more cells to the UICollectionView
[英]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.