- Einstellung .reuseIdentifier auf eine UICollectionViewCell

Ich habe eine Besondere UICollectionViewCell will ich instanziieren mich, und fügen Sie zu einem UICollectionView. Um für diese zu arbeiten, die UICollectionViewCell Instanz braucht seine .reuseIdentifier Eigenschaft festgelegt werden.

Normalerweise die Klasse oder Nib beschreibt, dass die Zelle eingetragen, in der Ansicht Sammlung und der Sammlung Sicht erzeugt die Zelle mit Ihrem .reuseIdentifier bereits festgelegt ist, mit diesen Methoden:

- registerClass:forCellWithReuseIdentifier:
- registerNib:forCellWithReuseIdentifier:

Jedoch, da ich mich für den Bau dieser Zelle außerhalb des collection view, diese nicht anzuwenden.

Wenn ich die Zelle selbst, es scheint kein Weg zu sein, um seine .reuseIdentifier (weil es ein readonly-Eigenschaft, und es gibt keine init... Methoden, die Initialisierung).

Wenn .reuseIdentifier ist nicht festgelegt, die UICollectionView wirft eine Ausnahme wenn die Zelle Hinzugefügt wird. Dieses Verhalten unterscheidet sich von UITableView, in denen die Wiederverwendung von Bezeichnern waren optional.

Einen einfachen workaround, um die Sammlung anzuzeigen Zelle reuse-identifier ist die Einbettung in eine .xib Datei und verwenden Sie die Identifier box, dann erstellen Sie eine Instanz der Zelle mit

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

Ich kann dann passieren die oben instanziiert UICollectionViewCell und alles funktioniert einwandfrei.

...aber das scheint wie eine ziemlich dumme und willkürliche-hoop-Reifen zu springen durch. Gibt es einen anderen Weg um diese Eigenschaft auf die Zelle, die Instanz, ohne die .xib-wrapper Umweg?


Update: die Dokumentation von Apple, sagt:

Zur Vereinfachung des Erstellungsprozesses für den code, der Ansicht Sammlung erfordert, dass Sie immer dequeue Ansichten, anstatt erstellen Sie explizit in Ihrem code.

...das ist eigentlich nicht wahr, weil es nicht erfordern (D. H., von außen instanziert Zellen funktionieren so lange, wie Ihre Kennung gesetzt ist irgendwie, wenn z.B. geladen von einem .xib), und es ist auch nicht "vereinfachen den Erstellungsprozess für meinen code" in meinem Anwendungsfall (vielmehr erfordert eine extra-Datei; weiter wäre es chaotisch zu verlangen, dass in der Ansicht Sammlung erstellen, diese paar komplexe one-offs).

Aber die oben scheint zu implizieren, dass die Antwort auf die Frage ist nicht: es ist absichtlich "schwer" zu schaffen, eine nutzbare Zelle außer durch die Auflistung anzeigen zu entfernen.

Vielleicht hilft: stackoverflow.com/questions/12729612/.... (Es ist für table view cells, aber ich denke, es sollte auch für die Sammlung view-Zellen).
Danke, das ist ein guter trick, um zu versuchen. Ich wurde auch gefragt, ob setValue:forKey "arbeitet, um" die readonly bit. 🙂

InformationsquelleAutor mjh | 2012-11-08

Schreibe einen Kommentar