viewWithTag gibt es nil zurück, wenn die Initialisierung einer UICollectionViewCell

Gerade erst angefangen mit UICollectionView. Ich habe IB zu erstellen eine einfache UICollectionView im UIViewController. Es scrollt horizontal mit paging. Ich stellte eine einfache UICollectionViewCell innerhalb der UICollectionView. Ich den reuse-identifier für die Zelle.

Legte ich ein UILabel mit einem tag der 100 innerhalb der UICollectionViewCell.

In viewDidLoad rufe ich:

[_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Thing"];

Später habe ich versucht zu initialisieren, die die Zelle etwa 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 die app starte, die Ansicht lädt richtig; ich kann scrollen horizontal durch die 2-Zellen. Ich sehe die hässliche grüne Farbe Identifizierung jeder einzelnen Zelle.

Jedoch die viewWithTag Methode gibt nil und daher die bezeichnungslabel text nicht festgelegt ist.

Warum?

Beachten Sie, dass ich habe auch versucht, die Definition einer benutzerdefinierten Unterklasse UICollectionViewCell und Aufruf von registerClass mit ihm. In IB, ändere ich die Zelle-Klasse, um die benutzerdefinierten Unterklasse und ich Binde die UILabel zu den UILabel - Steckdose in der Unterklasse.

Aber das funktioniert auch nicht. (Ich würde es vorziehen, zu vermeiden, die benutzerdefinierten Unterklasse Ansatz trotzdem, weil es scheint nicht erforderlich zu definieren, die Klassen einfach zu halten IBOutlets.)

Denke ich, dass ich etwas fehlt hier offensichtlich.

Ähnliches problem, beschrieben hier:

Probleme beim Zugriff auf Bild-ab-Instanz UICollectionViewCell

  • Wo schaffen Sie den UILabel?
  • Die UILabel konfiguriert ist im Interface Builder. Ich erwarte nicht, dass alloc es im code. Ich dachte, dass viewWithTag abrufen soll die erstellte Instanz. Dies ist, wie es funktioniert mit der UITableView.
  • Haben Sie zugewiesen, die reuseIdentifier für Prototyp CollectionViewCell in Ihrer Feder?
  • Ja, dequeueReusableCellWithReuseIdentifier gibt eine gültige Zelle. Wenn ich einen Konflikt hier, dann die app abstürzt.
  • Ich denke, dass Ihr collectionView Zelle nicht aus Ihren Prototyp in Ihre Feder, sondern es ist die Schaffung einer Zelle von RegisterClass-Methode. Verwenden Sie registerNib Methode.
InformationsquelleAutor Daniel | 2014-01-28
Schreibe einen Kommentar