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
}
}
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. –
Ich habe es herausgefunden. Ich habe eine Ansicht für eine Geste im Code hinzugefügt und dies nicht berücksichtigt. Vielen Dank! –
Toll, dass Sie es herausgefunden haben –