2016-07-31 8 views
1

Ich habe Collection, die mehrere dynamische Zellen hat, foreach Zelle Taste haben, die Aktion Anzahl der Elemente hinzuzufügen, hat hier meine einfachen Code:Warum fügt das Hinzufügen einer Aktion zur Schaltfläche in UICollectionViewCell nicht gut zu?

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 

    if ids.count == 0 
    { 
     return 3 
    }else 
    { 
    return ids.count 
    } 

} 




func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 


    if ids.count == 0 
    { 
     let cell = myCollection.dequeueReusableCellWithReuseIdentifier("loadingItems", forIndexPath: indexPath) 

     return cell 


    }else 
    { 
    let cell =myCollection.dequeueReusableCellWithReuseIdentifier("cellProduct", forIndexPath: indexPath) as! productsCollectionViewCell 

     cell.addItems.addTarget(self, action: #selector(homeViewController.addItemsNumberToCart(_:)), forControlEvents: UIControlEvents.TouchUpInside) 
    } 







    return cell 

    } 
} 

und hier ist das Verfahren, welches das Hinzufügen von Elementen

func addItemsNumberToCart(sender:UIButton) 
{ 

sender.setTitle("Added to cart", forState: UIControlState.Normal) 

} 

und Hier ist meine SammlungViewCell Klasse

es ist arbeiten und Ändern von Werten, aber es ändert Werte für mehrere Zeilen S ist nicht nur die ausgewählte Reihe jemand jetzt, was ist los?

Antwort

3

Sieht so aus, als ob Sie das Ziel hinzufügen, es aber nie entfernen. Wenn Zellen wiederverwendet werden, akkumulieren die Schaltflächen mehrere Ziele. Es gibt einige Möglichkeiten, dies zu lösen. ist prepareForReuse in Ihrer productsCollectionViewCell Klasse zu implementieren (die übrigens einen Groß P haben sollte):

class ProductsCollectionViewCell: UICollectionViewCell { 
    @IBOutlet weak var addItems: UIButton! 

    func prepareForReuse() { 
     super.prepareForReuse() 
     addItems?.removeTarget(nil, action: nil, forControlEvents: .AllEvents) 
    } 
} 
+0

Noch gleichen Fehler haben :( – Muhammed

+0

Leider wurde es von mir Fehler es funktioniert :) Danke – Muhammed

Verwandte Themen