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を登録しないとどんな副作用がありますか?