2016-07-20 7 views
0

auswählen Ich habe eine benutzerdefinierte Zelle für meine collectionView. Dort habe ich eine UIImageView und ein Label. Angenommen, ich habe insgesamt 9 Zellen. Wenn der Benutzer nun auf eine Zelle klickt, möchte ich das Bild dieser bestimmten Zelle ändern und auch die Bilder aller anderen Zellen ändern.Wie man mehrere Zellen ändert, wenn Benutzer eine Zelle in UICollectionView mit Swift

Sagen wir, ich habe 3 Bilder A, B und C. Wenn CollectionView laden alle Zellen enthalten Bild A, wenn Benutzer eine Zelle auswählen, wird das Bild dieser Zelle in B geändert und alle anderen Zelle Bilder werden zu C geändert werden

Wie kann ich das bitte helfen?

+0

Siehe Frage hier: http://stackoverflow.com/questions/38390281/how-to-change-image-to-previous-state-if-other-row-is-selected-in-tableview-dids/38390572 # 38390572 Könnte hilfreich sein. – fiks

Antwort

1

Versuchen Sie den folgenden Code

var selectedColorIndexpath:NSIndexPath! = NSIndexPath() 

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) 

{

selectedColorIndexpath = indexPath 

let selectedCell = collectionView.cellForItemAtIndexPath(indexPath) as! ColorCollectionViewCell 

    for cell in collectionView.visibleCells() as [UICollectionViewCell] 
    { 
     if selectedCell == cell{ 
      cell.yourImage.image = your A image 
     } 
     else{ 
      cell.yourImage.image = your B image 
     } 

    } 
} 


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

    if indexPath == selectedColorIndexpath{ 
     cell.yourImage.image = your A image 
    } 
    else 
    { 
     cell.yourImage.image = your B image 
    } 

    return cell 
} 
+0

'collectionView.ReloadData()' wird benötigt nach 'selectedColorIndexPath = indexPath' – Fujia

+0

@Fujia Ich denke nicht benötigt, weil ich für die Schleife hinzugefügt habe – Madhumitha

+0

Zellen werden wiederverwendet und For-Schleife mit Sammlung Ansicht wird wahrscheinlich Probleme verursachen – Fujia

1

Wenn Sie Bild auf Zellenauswahl ändern möchten dann Ihren Code ändern, wie dies

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let cell : CustomCell = collectionView.dequeueReusableCellWithReuseIdentifier("CustomCell", forIndexPath: indexPath) as! CustomCell 
    let selectedindexPath = collectionView.indexPathsForSelectedItems() 
    if selectedindexPath.count > 0 { 
     if (cell.selected) { 
      cell.imageView.image = imageB 
     } 
     else { 
      cell.imageView.image = imageC 
     } 
    } 
    else { 
     cell.imageView.image = imageA 
    } 
    //Your other settings 
    return cell  
} 

Jetzt neu laden nur collectionView auf didSelecteItemAtIndexPath

+0

tut mir leid . Ich konnte meine Frage nicht richtig erklären. Eigentlich habe ich drei Bilder Wenn die Sammlung View dargestellt wird habe ich Image A auf allen Zellen. Wenn der Benutzer eine Zelle auswählt, wird das Bild der betreffenden Zelle in B geändert und alle anderen Bilder der Zelle werden in C geändert. Bitte leite mich hierüber weiter. – Byte

+0

@Byte Prüfe meine bearbeitete Antwort. –

Verwandte Themen