2017-07-19 7 views
0

Ich versuche, eine Sammlungsansicht für meine Schaltflächen zu verwenden. Also habe ich im Storyboard 8 Buttons genommen und in die Collection-Ansicht eingefügt. Die Sammlungsansicht hat 8 Zellen für jede Taste mit 8 eindeutigen Identifikatoren. Alle Schaltflächen werden angezeigt, wenn ich sie der Sammlungsansicht hinzugefügt habe.Ziehen von Schaltflächen zu CollectionView (Xcode 8)

Aber mein Problem ist, dass wenn ich baue und laufe, bekomme ich keinen Fehler, aber die 8 Tasten in der Zelle zeigen überhaupt nicht!

Ich habe keinen Code im Hintergrund. Einfach per Drag & Drop und benutzt die Attribute.

Also bin ich ein wenig verwirrt, warum es nicht angezeigt wird. Ich würde eine Anleitung schätzen.

+0

Haben Sie den Drag-Befehl von der Sammlungsansicht auf die VC gesteuert, um die Delegaten und die Datenquelle einzurichten? Sie sollten Ihren vc auch den Delegiertenmethoden der Sammlungsansicht anpassen. – Douglas

+0

@ Douglas: Ja, habe ich. Ich habe etwas mehr recherchiert und das habe ich vergessen, danke. Aber ich habe mehrere Zellen mit unterschiedlichen Bezeichnern (ich kann keinen Bezeichner verwenden), also zeigt es mir nur eine Zelle an. – insolence

+0

In Ihrer cellforindexpath-Methode haben Sie höchstwahrscheinlich einen Wiederverwendungsbezeichner angegeben. Wenn Sie 8 verschiedene Zelltypen haben, müssen Sie die Reihenfolge herausfinden und eine if-Anweisung verwenden. Wenn der Indexpfad 1 ist, verwenden Sie die Zelle mit der Kennung "firstcell". Wenn der Indexpfad 2 ist, verwenden Sie einen anderen und so weiter. – Douglas

Antwort

1

Lassen Sie mich voran gehen und @ Douglas Kommentar verwenden, um die Frage zu beantworten. Also erstes, was ich völlig zu tun vergessen, war ctrl + Drag die -Sammlung Ansicht zum Viewcontroller im Storyboard und ermöglicht Datasource und Delegierten. Dann habe ich in meinem ViewController.swift folgenden Code implementiert:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 

    if(indexPath.item == 0) { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "kitchenButton", for: indexPath) 
     return cell 
    } else if(indexPath.item == 1) { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cameraButton", for: indexPath) 
     return cell 
    } else if(indexPath.item == 2) { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "eventsButton", for: indexPath) 
     return cell 
    } else if(indexPath.item == 3) { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "mapButton", for: indexPath) 
     return cell 
    } else if(indexPath.item == 4) { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "journeyButton", for: indexPath) 
     return cell 
    } else if(indexPath.item == 5) { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "callButton", for: indexPath) 
     return cell 
    } else if(indexPath.item == 6) { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "handsButton", for: indexPath) 
     return cell 
    } else if(indexPath.item == 7) { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "swimButton", for: indexPath) 
     return cell 
    } else { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "none", for: indexPath) 
      return cell 
    } 


} 

Der folgende Code ist für mehrere Zellen. Ich versuche einen horizontalen Scroll-Effekt zu erzielen, so dass diese Methode wunderbar für mich funktioniert.

Stellen Sie sicher, dass Sie UICollectionViewDelegateFlowLayout, UICollectionViewDataSource in die Kopfzeile Ihrer Klasse einfügen.

Danke @Douglas!

+0

Weg zu gehen! Freut mich zu hören, dass es funktioniert! – Douglas