Erreur: impossible de retirer une vue de type UICollectionElementKindCell
En prenant d'abord plonger avec les vues de la collection et suis en cours d'exécution sur cette erreur:
Résiliation d'application en raison de uncaught exception 'NSInternalInconsistencyException', la raison: "ne pourrait pas retirer une vue de type: UICollectionElementKindCell avec un identificateur de Cellule doit s'inscrire une plume ou une classe pour l'identifiant, ou de connecter un prototype de cellule dans un storyboard'
Le code est très simple, comme illustré ci-dessous. Je ne peux pas pour la vie de me comprendre ce que c'est que je suis absent.
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
cell.backgroundColor = [UIColor whiteColor];
return cell;
}
L'affichage de la collection contrôleur a été créé à l'aide d'une plume et les délégués & les sources de données sont toutes les deux à propriétaire du fichier.
- Vue-Contrôleur du fichier d'en-tête est également vraiment de base.
@interface NewMobialViewController_3 : UICollectionViewController <UICollectionViewDataSource, UICollectionViewDelegateFlowLayout>
@end
- [auto.collectionView registerClass:[UICollectionViewCell classe] forCellWithReuseIdentifier:@"Cellule"];
- Non, si l'utilisation de la PLUME, utiliser les
registerNib:forCellWithReuseIdentifier:
. Mais si la construction de la cellule par programmation sans PLUME ou le storyboard de la cellule prototype, alors, oui, utiliser lesregisterClass:forCellWithReuseIdentifier:
.
Vous devez vous connecter pour publier un commentaire.
De la UICollectionView documentation pour la résorption de la méthode:
Vous devez utiliser le même identifiant entre les dequeueReusableCellWithReuseIdentifier de l'argument et de la UICollectionViewCell de la propriété.
En complément de ce que @jrtuton écrit... Ce que vous avez besoin est:
1) pour Inscrire votre fichier nib à "connecter" avec votre identifiant:
2) Utilisez votre identifiant pour charger votre cellule personnalisé à partir d'une plume:
3) Utilisez toujours statique NSString* pour éviter les mêmes identifiants de nouveau dans votre application.
j'avais tout fait à 100% correctement.
mais pour certaines raisons, j'ai eu le même message d'erreur pendant une heure, ce que j'ai fait est:
simplement, refait cette étape, même quand je l'ai fait correct avant, comme son xcode manque quelque chose à un ordre de la nanoseconde!
Si vous utilisez storyboard au lieu de xib, voici quelques étapes.
Dans le ColletionViewDelegate.
Que c'est. Vous aussi ne pas souhaitez ajouter registerClass:forCellWithReuseIdentifier: qui va provoquer élément néant erreur.
Swift4.0
À chaque fois que votre
UITableViewCell
est xib, à ce moment, vous devez vous inscrire auprès deUITableView
.Swift 5
1) assurez-vous que vous avez une bonne deque d'en-TÊTE, vous pourriez être à l'aide de l'ordinaire pour les cellules normales.
2) de façon optimale l'enregistrement (ViewDidLoad)
Je sais que c'est un ancien, mais j'ai eu le même problème et je voulais partager ce qu'il fixe pour moi.
Dans mon cas, j'ai déclaré un identificateur global
et a dû utiliser auto droit avant de l'utiliser:
Espère que cela aide quelqu'un 🙂
Vous avez besoin de donner les bons reuseble identifiant dans la table de montage séquentiel, qui vous ont donner dans le code lors de l'inscription de la collectionViewCell.
Voici le code.
Ce qui fixe ce qui pour moi était (à peu près) le même que Omar réponse, sauf que j'ai fini par créer un nouveau UICollectionViewCell classe personnalisée et donnant à la Cellule de Réutilisation Identifiant une nouvelle /autre nom que celui que j'avais utilisé ailleurs dans l'application. Cela a fonctionné tout de suite après.
Si vous créez par code, vous devez créer un personnalisé
UICollectionViewCell
, Puis, init aUICollectionView
,et l'utilisationloadView
pour définir le point de vue est leUICollectionView
que vous créez. Si vous créez dansviewDidload()
, il ne fonctionne pas. En outre, vous pouvez également faire glisser unUICollectionViewController
, il permet d'économiser beaucoup de temps.