我正在使用帶有自定義佈局的UICollectionView
,但在向下滾動並備份後,單元格消失。爲什麼我的UICollectionViewCells在滾動後消失?
請參閱我的問題的video demonstration。
我已經做了一些谷歌搜索和其他人有相關的問題,我認識到這可能是由於細胞再利用,但沒有在其他地方找到的答案幫助我。
所以我的問題是:
這究竟是爲什麼?
如何防止這種情況發生?
有趣的是,當我提出一個UIViewController
和關閉它,問題不再出現。請參閱此處的video。
注意:這個bug在這裏已經有一段時間了(至少從iOS 10開始並且還沒有在iOS 11 beta 1中修復過)。
編輯1
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
switch (indexPath as NSIndexPath).row {
case 0:
// Speak Logo Cell
let speakLogoCell = collectionView.dequeueReusableCell(withReuseIdentifier: "SpeakLogoCell", for: indexPath) as! SpeakLogoCell
recordButton = speakLogoCell.recordButton
return speakLogoCell
case 1:
// Text Input Cell
let inputCell = collectionView.dequeueReusableCell(withReuseIdentifier: "InputCell", for: indexPath) as! InputCell
inputCell.inputTextView.delegate = self
inputTextView = inputCell.inputTextView
// Only restore input if launching and required.
if currentlyLaunching && UserDefaultsHelper.loadShouldRestoreInput() {
inputTextView!.text = UserDefaultsHelper.loadInput() ?? ""
}
return inputCell
case 2:... // Continues for all the other cells
1. iOS刪除該單元格以節省資源,因爲它沒有顯示,並且您沒有正確重新初始化它。 2.正確重新初始化單元格。 (你認爲我們是魔術師,真的可以幫助你沒有*相關的*代碼?) – idmean
感謝您的回覆和建議發佈一些相關的代碼。我要編輯我的問題以包含cellForItem方法的適當部分。請讓我知道你是否想要其他東西。 –
什麼是inputTextView?它存儲在哪裏? –