2016-04-05 5 views
1

Ich verwende eine UICollectionView, um Produkte von einer externen API anzuzeigen. Die Produkte zeigen sich in der Kollektionsansicht einwandfrei, aber aus irgendeinem Grund kann ich keine der Zellen auswählen. Ich kann die erste Zelle auswählen, aber nur wenn ich nach oben scrolle und dann schnell auf die erste Zelle tippe. Ich verwende das Storyboard, um einen Übergang zu erstellen, und in der Steuerung gebe ich Daten an die nächste Ansicht weiter. Der Code ist unten:Nur UICollectionView Ermöglicht die Auswahl der ersten Zelle

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return self.tableData.count 
} 

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let cell: ProductsViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("productViewCell", forIndexPath: indexPath) as! ProductsViewCell 

    let product = tableData[indexPath.row] 

    cell.configureWithProduct(product, categoryId: "") 

    return cell 
} 

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 
    print("Cell \(indexPath.row) selected") 
} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { 
    if (segue.identifier == "productDetails") { 
     let svc = segue.destinationViewController as! ProductViewController; 

     let indexPaths : NSArray = self.collectionView!.indexPathsForSelectedItems()! 
     let indexPath : NSIndexPath = indexPaths[0] as! NSIndexPath 

     let product = tableData[indexPath.row] 
     svc.productId = product["merged"][0]["id"].int 

    } 
} 

Antwort

1

Stellen Sie sicher, Ihre segue geht von Ihrem Collection Zelle zu Ihrem Viewcontroller

Überprüfen Sie, ob prepareForSegue genannt wird, und Ihr didSelectItemAtIndexPath auch genannt wird, wenn Sie versuchen, Ihre Zelle zu klicken.

Überprüfen Sie auch, wenn Sie irgendwelche Ansichten auf Ihre Kollektion

Sie sicher, dass diejenigen, die ausgewählt haben lassen.

View Interaction

+0

Die didSelectItemAtIndexPath wird nicht aufgerufen wird, zeigt es eine print-Anweisung, und diese Aussage nicht gezeigt wird. Ich habe gerade überprüft, dass oberhalb der Sammlungsansicht keine Ansicht angezeigt wird. In der Sammlungsansicht wird ein Bild angezeigt, aber ich kann keine Zelle auswählen. –

+0

Ich habe es herausgefunden. Ich habe eine Ansicht für eine Geste im Code hinzugefügt und dies nicht berücksichtigt. Vielen Dank! –

+0

Toll, dass Sie es herausgefunden haben –

Verwandte Themen