Erste Schritte mit UICollectionView
. Ich habe IB verwendet, um eine einfache UICollectionView
in einem UIViewController
zu erstellen. Es scrollt horizontal mit Paging. Ich habe eine einfache UICollectionViewCell
innerhalb der UICollectionView
platziert. Ich habe die Wiederverwendungs-ID für die Zelle festgelegt.viewWithTag gibt beim Initialisieren einer UICollectionViewCell null zurück.
Ich legte eine UILabel
mit einem Tag von 100 innerhalb der UICollectionViewCell
.
In viewDidLoad
, rufe ich:
[_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Thing"];
Später ich versuche, die Zelle zu initialisieren, wie so:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Thing" forIndexPath:indexPath];
cell.backgroundColor = [UIColor greenColor];
UILabel *nameLabel = (UILabel *)[cell viewWithTag:100];
nameLabel.text = @"Bogus";
return cell;
}
Wenn ich laufen die App, die Ansicht korrekt geladen; Ich kann horizontal durch die 2 Zellen scrollen. Ich sehe die hässliche grüne Farbe, die jede Zelle identifiziert.
Die Methode viewWithTag
gibt jedoch nil
zurück und daher wird der NameLabel-Text nicht festgelegt.
Warum?
Beachten Sie, dass ich auch versucht habe, eine benutzerdefinierte Unterklasse von UICollectionViewCell
zu definieren und registerClass damit aufzurufen. In IB ändere ich die Zellklasse in die benutzerdefinierte Unterklasse und binde die UILabel
an die UILabel
Steckdose in der Unterklasse.
Aber das funktioniert auch nicht. (Ich würde den Ansatz der benutzerdefinierten Unterklasse sowieso vermeiden, da es nicht notwendig erscheint, Klassen zu definieren, nur um IBOutlets
zu halten.)
Ich denke, dass ich etwas offensichtlich hier vermisse.
ähnliches Problem hier beschrieben:
Trouble accessing Image from instance of UICollectionViewCell
Wo erstellen Sie das UILabel? – Odrakir
Das UILabel wird in Interface Builder konfiguriert. Ich erwarte nicht, es im Code zuzuteilen. Ich dachte, dass viewWithTag die erstellte Instanz abrufen sollte. So funktioniert es mit UITableView. – Daniel
Haben Sie den reuseIdentifier für den Prototyp CollectionViewCell in Ihrer Schreibfeder zugewiesen? – chandu