2017-06-22 3 views
0

Ich mache ein Menü, wo ich die Zellen im Voraus kenne. Daher erstelle ich jede Zelle UICollectionViewCell() im Code. Diese Verwendung in UITableView zu arbeiten, aber in UICollectionView gibt es Fehler in cellForItemAt:UICollectionView - Liste von UICollectionViewCell, die in cellForItemAt zurückgegeben wird

keine reuseIdentifier haben - Zellen durch den Aufruf abgerufen werden müssen - dequeueReusableCellWithReuseIdentifier:forIndexPath: '

Ok, also wenn ich erstellen jeweils UICollectionViewCell (Benutzerdefinierte Superzelle). Es möchte Zell-ID, kein Problem. Aber ich will auch IndexPath.

So ist die Frage; Wie kann ich UICollectionViewCell im Voraus erstellen?

Ich hoffe, Sie können es verstehen.

Antwort

0

Sammlungsansicht erfordert, dass Sie Ansichten immer aus der Warteschlange entfernen, anstatt explizit in Ihrem Code zu erstellen. Es gibt zwei Methoden für , Ansichten zu entfernen.

  • Verwenden Sie die dequeueReusableCell(withReuseIdentifier:for:) eine Zelle für ein Element in der Sammlung Ansicht zu erhalten.

  • Verwenden Sie die Methode , um eine vom Layout-Objekt angeforderte zusätzliche Ansicht abzurufen.

Bevor Sie eine dieser Methoden aufrufen, müssen Sie die Sammlung Blick sagen, wie die entsprechende Ansicht erstellen, wenn man nicht bereits existieren. Dazu müssen Sie entweder eine Klassen- oder eine Nib-Datei mit der Sammlungsansicht registrieren. Wenn Sie beispielsweise Zellen registrieren, verwenden Sie die Methode register(_:forCellWithReuseIdentifier:) oder register(_:forCellWithReuseIdentifier:). Als Teil des Registrierungsvorgangs geben Sie die Wiederverwendungs-ID an, die den Zweck der Ansicht angibt: . Dies ist dieselbe Zeichenkette, die Sie verwenden, wenn Sie die Ansicht später aus der Warteschlange entfernen ( ).

In Delegatmethode cellForItem(at:) Sie Zelle dequeueReusableCell(withReuseIdentifier:for:), indem Sie Ihre Wiederverwendung identifer und indexPath zu Verfahren aus der Warteschlange entfernt müssen, wird das zurückgegebene Objekt Ihre Zelle sein.

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    // reference to your cell 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) 
    return cell 
} 

Wenn Sie mit stroyboards müssen Sie Wiederverwendung Kennung setzen hier image

und übergeben es an dequeueReusableCell(withReuseIdentifier:for:) Methode

Here können Sie weitere Informationen finden, wie Sammlung Ansichten zu verwenden.

Verwandte Themen