Sto implementando un UICollectionViewCell personalizzato e desidero sapere come inviare i dati del modello ad esso in modo che i dati possano essere utilizzati per inizializzare le sottoview della cella.Sottoclasse UCollectionViewCell metodo init personalizzato
registro il mio MyCollectionViewCell facendo ..
[self.collectionView registerClass:[MyCollectionViewCell class] forCellWithReuseIdentifier:@"MyCell"];
e nel metodo seguito, lo faccio ...
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
MyCollectionViewCell* cell = [self.collectionView dequeueReusableCellWithReuseIdentifier:@"MyCell" forIndexPath:indexPath];
Il problema che sto affrontando è, quando una cella di isn' t nella coda di riutilizzo, inizializza una nuova cella chiamando il metodo initWithFrame (che la documentazione conferma dovrebbe accadere). Tuttavia, ho un metodo init personalizzato nella mia classe MyCollectionViewCell, che è ...
-(id) initWithFrame:(CGRect)frame withData: (NSDictionary*) data;
Voglio mia abitudine metodo inizializzare di essere chiamato, invece. Come potrei farlo? Non sto usando alcun pennino e sto facendo tutto a livello di codice.
Se non c'è alcun modo, e devo invece utilizzare il metodo initWithFrame, in quale altro modo posso passare i dati del modello al mio MyCollectionViewCell in modo da poter inizializzare le sottoview con tali dati?
Grazie!
Questo. Se riutilizzi una cella, non invierai initWith ... niente, quindi impostare i dati dovrebbe essere separato dal metodo init. – jrturton
Tranne che non chiamarlo initData. Chiamalo configureForData o setData (se i dati sono una proprietà) qualcosa. init ... i metodi dovrebbero essere chiamati solo su oggetti appena assegnati. – jrturton
Ha senso. Dopo aver chiamato setData e aver passato i dati del mio modello, come faccio a far scattare la cella per ricaricarla? Devo chiamare setNeedsLayout e avere un metodo - (void) layoutSubviews nella mia cella personalizzata? –