Ho una vista di raccolta che contiene celle personalizzate differenti.UICollectionView: l'oggetto UICollectionViewCell è sempre null in sizeForItemAtIndexPath
Queste celle contengono contenuto diverso che varia in termini di dimensioni.
Le celle sono definite nello Storyboard, quindi nessuna registrazione è necessaria nel codice.
Tutto quello che voglio fare ora è cambiare la dimensione del metodo delegato a seconda del contenuto:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
id cellAtIndexPath = [collectionView cellForItemAtIndexPath:indexPath];
NSLog(@"The cell: %@", cellAtIndexPath);
...
e.g. calling sizeToFit methods and cumulating the sizes of the cells' subviews
...
}
il metodo viene chiamato come previsto per ogni cellula, ma cellAtIndexPath restituisce sempre NULL, non importa quello che ho provato. Quindi non sono in grado di accedere all'oggetto cella in indexPath o nella sua vista contenuto.
Qualche suggerimento perché non riesco ad accedere all'oggetto cella?
Grazie! Quindi, da questo punto di vista non è possibile impostare altezze delle celle diverse a seconda delle sottoview (di solito si chiama sizeToFit per calcolarlo)? Non c'è alcuna possibilità di "ridimensionare" le celle a seconda del loro contenuto? Per esempio. per UILabels, dovresti calcolare l'altezza per riga e lunghezza del testo. E questo sarebbe molto impreciso. – crud21
Giusto. È possibile trovare i modi per calcolare la dimensione della cella se dipende dal suo contenuto, ma non si può dipendere dalle visualizzazioni della cella. (Ad esempio 'NSString' fornisce metodi per ottenere le dimensioni del testo.) – chris
Questo è sciocco e sfortunato ... Non' UITableView' vai alla sorgente dati e ottieni la cella se la chiedi per una cella che non esiste ancora ? – jtbandes