UIcollectionCell多重化雑談
1577 ワード
UICollectionView
というコントロールをあまり使ったことがありません.最近1つのAppで忙しくて、その中の1つのフィルタリングのインターフェースは現在UICollectionView
で他の人を楽にしているように見えて、そこで振り回され始めました.まずこちらの大体の構造を話して、時間があれば写真を補充します.フィルタリングのオプションには多くの次元があります.1つの次元はsectionを使用します.各次元はラジオなので、各sectionにHashTableを割り当てて、- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;
で、このsectionのメソッドを対応するHashTableに格納します.
フィルタボックスに折りたたみ機能があります.ここではタグビットを設定し、タグビットがタグ付けされるとdataSourceで0を返します.
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
if (hideSomeDataSource){
return 0;
}
return [dataSource count];
}
折りたたみボタンがクリックされると、フラグビットが反転し、
[collectionView reloadData]
メソッドが呼び出される.理想はすばらしい.最終的には、折りたたみを押すたびに、いくつかのフィルタオプション(UIButton)のselectionプロパティが乱れます.最終的には、折りたたみをクリックしたときにreload cellが多重化されていることがわかります.最初の反応は、単一のsection reloadを許可できるかどうかです.残念ですが、当時はきつくて、調子が悪かったです.気づかなかった
- (void)reloadSections:(NSIndexSet *)sections;
この方法(自分にバカに泣かされる--).そこで曲線は国を救う.異なるsectionのcellを異なるidentifierに設定できるかどうかを考えます.私のCellは自分でxibで生成したからです.xibのidentifierは、1つのチェックボックスではなく、複数のidentifierを記入することができます.だから登録するときに一致しないidenfiterに登録したら間違いを報告するに違いない.そこでxibのidentifierを取り除くとどうなるか考えてみました.結果は本当にできることに気づいた.したがって、カスタムCellが異なるidentifierとして登録されることを望む場合、xibにidentifierを記入せずに使用するcollectionViewに登録すればよいという予想外の結果が得られた.
これにより疑問が生じるが、xibに登録されているidentifierはどのような役割を果たしているのだろうか.あるいはxibにidentifierを登録しないとどんな副作用がありますか?