Ce que j'essaie de réaliser est une table 3x3 avec UICollectionView
. Mais il n'affiche aucune cellule lors de l'exécution de l'application. Il affiche la couleur de fond de la variable CollectionView
(que j'ai définie en bleu) Quelqu'un peut-il m'aider ici?
Ce que j’ai fait, c’est de créer une storyboard
et de simplement y glisser une CollectionViewController
. Ce contrôleur a également apporté une variable CollectionView
imbriquée. Ensuite, j'ai simplement utilisé les paramètres pour rendre son arrière-plan bleu et pour y ajouter une cellule dont j'ai fait pourpre l'arrière-plan (les deux uniquement à des fins de test). Pour finir, faites glisser une UILabel
sur celle-ci. Maintenant, lorsqu’il est lancé, il n’affiche que le fond bleu, mais pas les cellules, bien qu’elles soient clairement visibles dans l’éditeur. J'ai ensuite essayé de créer une UICollectionViewController
personnalisée, d'affecter la classe à la CollectionViewController
au lieu de la classe standard et de procéder de la même manière à la cellule (attribuer une UICollectionViewCell
personnalisée). Dans la coutume UICollectionViewController
, j'ai implémenté les méthodes suivantes:
-(NSIntegear)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return 9;
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"Cell";
AboutYourGoalsMultiSelectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
[[cell goal]setText:@"T"];
return cell;
}
J'ai défini l'identifiant de la cellule sur "Cell" et établi une connexion de sortie de dataSource et un délégué entre CollectionView et le UICollectionViewController personnalisé. Tout est bien compilé… donc qu'est-ce qui me manque? N'aurait-il pas dû afficher quelque chose de bien avant de faire toutes ces modifications en utilisant simplement l'éditeur?
N'ayant pas trouvé de solution directe, j'ai essayé de mettre en place un nouveau projet et apporté les mêmes modifications et ajustements et, étonnamment, tout a fonctionné dès le début. J'ai ensuite copié le story-board dans mon ancien projet, supprimé tous les anciens fichiers et remplacé par les fichiers du nouveau projet. Tout fonctionne bien jusqu'à présent. Je n'ai aucune idée de l'erreur réelle, mais je suis heureux que cela fonctionne maintenant. Merci à tous ceux qui ont consulté ma question!
Voir ma réponse ici , en bref, vous devez supprimer cette ligne si vous travaillez avec un storyboard:
// Register cell classes
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];
Une source d'erreur commune est que dataSource et délégué ne sont pas définis dans les Outlets.
Vous avez une erreur dans la première ligne de votre code.
-(NSIntegear)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
NSIntegear
devrait être NSInteger
.
Pas sûr que ce soit le problème car xcode ne devrait pas vous permettre d’exécuter votre projet avec cette erreur. J'ai juste essayé de suivre exactement les mêmes étapes que vous avez mentionnées (sans étiquette) mais avec la correction ci-dessus et cela a bien fonctionné pour moi. Voici une capture d'écran:
Si vous essayez de créer simplement un simple CollectionViewController (pas personnalisé, c'est-à-dire par implémentation) et que vos cellules ne s'affichent pas lors de l'exécution de l'application, procédez comme suit: -
Maintenant, ouvrez votre classe créée et éditez vos méthodes comme ceci:
override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
//#warning Incomplete method implementation -- Return the number of sections
return 1
}
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
//#warning Incomplete method implementation -- Return the number of items in the section
return 1
}
Éditez seulement la valeur "retour" (qui est 0 par défaut) et écrivez simplement le nombre de cellules/éléments que vous voulez afficher ou que vous avez créés (dans ce cas, je n’avais créé qu’une cellule).
[ios] [Swift3] [xcode]