Le réglage .reuseIdentifier sur un UICollectionViewCell

J'ai un particulier UICollectionViewCell que je veux instancier moi-même, et ajouter dans une UICollectionView. Pour que cela fonctionne, le UICollectionViewCell instance besoins de ses .reuseIdentifier propriété à définir.

Normalement, la classe ou de la Plume qui décrit la cellule est enregistré auprès de l'affichage de la collection, et l'affichage de la collection instancie la cellule avec son .reuseIdentifier déjà, avec ces méthodes:

- registerClass:forCellWithReuseIdentifier:
- registerNib:forCellWithReuseIdentifier:

Cependant, depuis que je suis la construction de cette cellule en dehors de la vue de collection, elles ne s'appliquent pas.

Quand j'ai créer la cellule de moi-même, il semble y avoir aucun moyen de définir son .reuseIdentifier (parce que c'est une propriété en lecture seule, et il n'y a pas init... méthodes que l'initialiser).

Quand .reuseIdentifier n'est pas définie, la UICollectionView déclenche une exception lorsque la cellule est ajoutée. Ce comportement est différent de UITableView, où la réutilisation des identifiants étaient facultatives.

Une simple solution de contournement pour définir l'affichage de la collection de la cellule de réutilisation de l'identifiant est de les intégrer dans une .xib fichier et utiliser la Identifier boîte, puis de créer une instance de la cellule avec

[NSBundle.mainBundle loadNibNamed:@"MyCellName" owner:self options:nil][0];

Je peux ensuite passer au-dessus de la instancié UICollectionViewCell et tout fonctionne bien.

...mais cela semble assez stupide et arbitraire cerceau à sauter à travers. Est-il un autre moyen d'obtenir cette propriété est définie sur la cellule instance sans l' .xib-wrapper détour?


Mise à jour: la documentation d'Apple dit ceci:

Pour simplifier le processus de création de votre code, l'affichage de la collection exige que vous toujours à la résorption de points de vue, plutôt que de créer explicitement dans votre code.

...qui est en fait pas vrai, parce qu'il n'a pas besoin (c'est à dire, de l'extérieur instanciées cellules fonctionnent très bien aussi longtemps que leur identifiant est fixé en quelque sorte, par exemple si elle est chargée à partir d'un .xib), et il n'a pas également de "simplifier le processus de création de mon code" dans mon cas d'utilisation particulier (plutôt nécessite un fichier supplémentaire; en outre, il serait embrouillée pour exiger que l'affichage de la collection créer ces quelques complexes one-offs).

Mais le ci-dessus ne semblent indiquer que la réponse à la question est non: c'est intentionnellement "difficile" pour créer les cellules utilisables, sauf par le fait d'avoir l'affichage de la collection dequeue.

Peut-être que cela aide: stackoverflow.com/questions/12729612/.... (C'est pour la vue de la table de cellules, mais je pense qu'il devrait aussi pour la vue de collection cellules).
Merci, c'est un bon truc à essayer. Je me demandais aussi si setValue:forKey "travaille autour de" la readonly peu. 🙂

OriginalL'auteur mjh | 2012-11-08