我有一個UICollectionView
顯示NSFetchedResultsController
的內容。 collectionView有一個部分,在該部分有一個標題。標題允許用戶過濾集合視圖中的內容。標題視圖的代理連接到包含集合視圖的UIViewController
。UICollectionView內容在reloadData後隱藏
只要用戶更改其中一個篩選選項,標題視圖就會向其委託發送消息。代表在其的fetchRequest
上更改謂詞,並調用-[NSFetchedResultsController performFetch:]
。接下來,必須通知收集視圖內容已更改。這可以通過幾種方式完成,但我更喜歡的方式是撥打-[UICollectionView reloadData]
。不幸的是,這種方法不能像預期的那樣工作:當我調用這個方法時,整個集合視圖就會消失。這些都是一些我提出的意見對這個問題的:
- 所有單元,第一個(也是唯一一個)部分的標題有其
hidden
標誌設置爲YES
。我試圖通過在-[UIView setHidden:]
上設置一個符號斷點來跟蹤造成這種情況的方法。不幸的是,它從來沒有打破UICollectionView
子視圖。 collectionView:cellForItemAtIndexPath:
在撥打-[UICollectionView reloadData]
後永遠不會被調用。collectionView:viewForSupplementaryElementOfKind:atIndexPath:
在撥打-[UICollectionView reloadData]
後不會被調用。numberOfSectionsInCollectionView:
仍然被調用,仍然返回正確的數字(在這種情況下爲1)。collectionView:numberOfItemsInSection
仍然被調用,仍然返回正確的數字(在這種情況下爲1)。
我迄今試圖解決這一問題:
- 在
UICollectionViewFlowLayout
實例 - 在
UICollectionView
實例禁用所有自定義(separatorInset
)禁止所有自定義(sectionInset
,itemSize
) - 將標題作爲子視圖添加到
UICollectionView
並相應地設置contentInset
。不幸的是,UICollectionView
不喜歡我在自動佈局約束和崩潰時忍受痛苦。 - 致電
[UICollectionView reloadSections:]
而不是[UICollectionView reloadData]
。這有效,但我不喜歡動畫。 - 手動插入,刪除和更新第一部分中的行。只要包含集合視圖的視圖控制器位於內存中,它就會工作。只要它解除分配,應用程序崩潰在
-[UICollectionView dealloc]
斷言失敗。
這感覺不對有頭設置這種方式,但不幸的是UICollectionView
沒有全局頭像UITableView
(tableHeaderView
)。
嘿,已經找到了解決辦法? –
不,我不記得找到解決方案 – datwelk
好的,謝謝你的迴應。 –