iOS Échec d'Assertion dans UICollectionView
J'obtiens le message d'erreur ...
*** Assertion failure in -[UICollectionView _dequeueReusableViewOfKind:withIdentifier:forIndexPath:], /SourceCache/UIKit/UIKit-2372/UICollectionView.m:2249
Lorsque vous tentez d'afficher un UICollectionView.
Les lignes causant sont...
static NSString *CellIdentifier = @"Cell";
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
Erreur qui se passe sur la file d'attente.
Il n'y a pas d'autres erreurs, donc je suis mal à savoir par où commencer avec ce.
Quelqu'un peut-il éclairer sur ce point?
Vous devez vous connecter pour publier un commentaire.
Vous devez vous inscrire comme ci-dessous:
Été la lecture de la documentation (qui devrait peut-être avoir fait de cette première 🙂 )
De toute façon, le collectionView que j'utilise est à l'intérieur d'un distinct xib fichier (pas un storyboard) et de la documentation...
Grâce
registerClass
méthode dansviewDidLoad
donc j'ai dû le déplacer vers lecellForItemAtIndexPath
méthode.UICollectionView
objet n'a pas été alloué pourtant, quand vous avez appeléregisterClass:forCellWithReuseIdentifier:
méthode dansviewDidLoad
. Cela ne devrait pas arriver si la collecte de votre point de vue est défini via l'Interface Builder commeviewDidLoad
est appelé après l'initialisation de l'affichage de la collection puis. Dans le cas où vous initialisez votre vue de collection par programme juste s'assurer qu'il obtient allouée avant vous appelez laregisterClass:...
méthode. Je ne pense pas quecellForItemAtIndexPath
est l'endroit idéal pour ça ...[super viewDidLoad]
quand j'ai déménagéregisterNib:...
avant[super viewDidLoad]
il a très bien fonctionné.Assurez-vous que si vous utilisez le
registerNib:
méthode:que AUSSI dans la plume de fichier, lorsque vous sélectionnez le niveau supérieur de la collection de réutilisables vue, utilisez les attributs de l'inspecteur, et assurez-vous que la
Identifier
est réglé à la même valeur que vous êtes de passage dans lawithReuseIdentifier:
paramètre.J'ai eu le même problème. Voici comment je l'ai résolu.
Déplacer
[self.pictureCollectionView registerNib:[UINib nibWithNibName: bundle:nil] forCellWithReuseIdentifier:reuseID]
être dans
- (void)viewDidLoad
,plutôt que sur la méthode
- (void)awakeFromNib
.J'ai eu ce crash sur iOS 9 seulement (iOS 10/11 fonctionnent très bien).
Je n'avais pas de sous-classe personnalisée d'un Flux de Mise en page, mais le réglage de la
headerReferenceSize
sur l'existant directement.Ainsi, dans Interface Builder avec en-Tête de Section permis je l'ai eu cet accident, sans la coche tout fonctionne bien et les en-têtes sont correctement affichés, depuis que j'ai mis la taille dans le code.
Remplacer
avec
J'ai vu cette erreur pop-up lors de l'utilisation de plusieurs UICollectionViews unique ReuseIdentifiers. Dans le ViewDidLoad vous souhaitez enregistrer chaque CollectionView de reuseIdentifier comme suit:
Puis, quand vous arrivez à "- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath" vous voulez vous assurer que vous n'essayez pas de définir une cellule pour collectionView1 à la reuseIdentifier pour collectionView2 ou vous obtiendrez cette erreur.
NE PAS faire CETTE: (Ou collectionView2 va voir le mauvais Identifiant et jeter un ajustement avant de voir l'identificateur elle attendait)
CE FAIRE: