2013-10-07 9 views
6

Quando si utilizza la sottoclasse personalizzata , non viene chiamato cellForItemAtIndexPath: (ho controllato utilizzando i breakpoint e l'output di debug). Questo è come io uso il layout personalizzato:cellForItemAtIndexPath: non viene chiamato quando si utilizza la sottoclasse UICollectionViewLayout personalizzata

- (void)viewDidLoad 
    { 
     [super viewDidLoad]; 

     DMSGridLayout* gridLayout = [[DMSGridLayout alloc] init]; 

//  UICollectionViewFlowLayout* flow = [[UICollectionViewFlowLayout alloc] init]; 
//  [flow setItemSize:CGSizeMake(150, 150)]; 

     UICollectionView *collection = [[UICollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:gridLayout]; 
     collection.delegate = self; 
     collection.dataSource = self; 
     self.collectionView = collection; 

     [self.view addSubview:self.collectionView]; 
     [self.collectionView registerClass:[DMSGridCell class] forCellWithReuseIdentifier:@"CollectionCell"]; 
    } 

Ma quando cambio il codice qui sopra per usare UICollectionViewFlowLayout invece del mio sottoclasse personalizzata, cellForItemAtIndexPath: si chiama.

Potrebbe essere che un codice dalla sottoclasse di layout personalizzato impedisca di chiamare cellForItemAtIndexPath?

+0

Sì, potrebbe. Dovrai mostrarne alcuni - se il layout non restituisce alcuna dimensione per la vista di raccolta, ad esempio, o qualsiasi dimensione per gli oggetti di layout, allora una cella non verrà mai creata. Hai implementato tutti i metodi come descritto nella documentazione? – jrturton

+0

Grazie mille. Ho incasinato l'origine del fotogramma delle celle ... era al di fuori dell'area visibile. Quindi era corretto che 'cellForItemAtIndexPath' non fosse chiamato. – flather

+0

Ok, ho inserito il mio commento come risposta, quindi puoi chiuderlo. – jrturton

risposta

5

Se il layout non restituisce alcuna dimensione per la vista di raccolta, ad esempio, o qualsiasi dimensione per gli oggetti di layout, una cella non verrà mai creata. Inoltre, i frame negli oggetti di layout devono essere all'interno dell'area visibile della vista di raccolta.

Problemi correlati