Voglio davvero fornire celle "statiche" al mio UICollectionView, ai vecchi tempi con UITableView. Ma so che noi bravi ragazzi e ragazze dobbiamo usare dequeueReusableCellWithReuseIdentifier:forIndexPath:
come fabbrica per le nostre cellule. Quindi propongo il seguente schema e chiedo feedback sul suo potenziale. Finora, sta funzionando per me, ma temo un trucchetto sconosciuto.Devo chiamare il dequeueCell di UICollectionView: all'interno di cellForPath:?
#import "MyCellClass.h"
@implementation MyViewController {
MyCellClass *_cell0; // etc - many are possible. could store in array
}
-(void)viewDidLoad {
// assume MyCellClass has a +nib and +reuseId. The reader understands.
[_collectionView registerNib:[MyCellClass nib] forCellWithReuseIdentifier:[MyCellClass reuseId]];
}
-(void)viewDidAppear:animated {
// this is where the fun begins. assume proper counts coming from the datasource
NSIndexPath *indexPath = [NSIndexPath indexPathWithRow:0 inSection:0];
_cell0 = [[self collectionView] dequeueReusableCellWithReuseIdentifier:[MyCellClass reuseId] forIndexPath:indexPath];
// etc
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
if ([indexPath row] == 0) return _cell0;
// etc
}
Rifletti deliberatamente su dettagli come la configurazione della cella. Follia? Genio? Solo lo status quo? Sembra che funzioni fino ad ora, ma temo che, in qualche modo, Apple si aspetta che lo dequeue
venga chiamato da cellForPath
. qualche idea?
Penso che la vera risposta sia "non sei obbligato a farlo!" :) – Fattie