2012-11-21 3 views
1

J'essaie de pousser d'un contrôleur de vue à un contrôleur de vue de collection.cellForItemAtIndexPath non appelé

UICollectionViewLayout *collectionViewLayout = [[UICollectionViewLayout alloc] init]; 
xraylab *xraylabvc = [[xraylab alloc]initWithCollectionViewLayout:collectionViewLayout]; 
[self.navigationController pushViewController:xraylabvc animated:YES]; 

Le contrôleur de vue de collection sera affiché avec un écran noir vide.

numberOfSectionsInCollectionView retourne 1

numberOfItemsInSection retourne un entier non nul

Mon problème est que cellForItemAtIndexPath n'est pas appelé.

Le délégué et la source de données de la vue de collection sont définis.

Des suggestions?

+0

Le délégué et la source de données de la vue de collection sont définis, datasource peut être vide. – samfisher

Répondre

1

numberOfItemsInSection devrait returnrowcount > 0 pour cellForItemAtIndexPath à exécuter

Vérifiez Delegate et datasource du collection view sont set

0

Vous ne pouvez pas utiliser UICollectionViewLayout comme il est. C'est une classe de base abstraite et elle doit être sous-classée. Vous pouvez utiliser UICollectionViewFlowLayout pour des vues de type grille si vous ne voulez pas écrire les vôtres.

1

J'ai eu le même problème et ça me rendait fou, c'est le code qui a fonctionné.

UICollectionViewFlowLayout *CollLayout = [[UICollectionViewFlowLayout alloc] init]; 
UICollectionView *AttachmentsView = [[UICollectionView alloc] initWithFrame:CGRectMake(20, CurrentY, 640, 300) collectionViewLayout:CollLayout]; 
//AttachmentsView.backgroundColor = [UIColor whiteColor]; 
[AttachmentsView registerClass:[Cell class] forCellWithReuseIdentifier:@"ReuseCell"]; 
[VaribleStore SharedInstance].Attachments = [[NSMutableArray alloc] initWithObjects:[UIColor yellowColor],[UIColor redColor],[UIColor blueColor], nil]; 
AttachmentsView.delegate = self; 
AttachmentsView.dataSource = self; 
[self.ScrollView addSubview:AttachmentsView]; 
[AttachmentsView reloadData]; 

La clé est d'utiliser le UICollectionViewFlowLayout, la raison est que UICollectionViewLayout est une classe abstraite et ne peut pas être utilisé à cette fin. après avoir fait ce commutateur ios appelé cellForItemAtIndexPath comme d'habitude.