2016-05-14 4 views
0

Also vor allem habe ich seit einigen Tagen auf diesem fest und verbrachte einen ganzen Tag lesen und versuchen viele Optionen auf Stack Overflow bereits, aber nicht zu meinem ErfolgToggle Auswahl/Deselection Zustand einer UICollectionView Zelle auf dem Tap - Swift

Was ich versuche, klingt einfach zu erreichen und gehen über die Apple-Dokumentation scheint es mir, sollte es funktionieren https://developer.apple.com/library/ios/documentation/UIKit/Reference/UICollectionViewDelegate_protocol/#//apple_ref/occ/intfm/UICollectionViewDelegate/collectionView:shouldHighlightItemAtIndexPath:

im Grunde, was ich versuche zu erreichen, um die ausgewählten Zustand eines UICollectionView hin- und herzuschalten Zelle vom Fass.

Erstes Tippen - Senden Sie die Zelle in einen ausgewählten Zustand und ändern Sie die Hintergrundfarbe in Weiß.

Zweiter Hahn - Senden Sie die Zelle in einen ausgewählten Zustand und Hintergrundfarbe ändern

Viewcontroller löschen -

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    if let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as? CollectionViewCell { 
     cell.cellImage.image = UIImage(named: images[indexPath.row]) 
     return cell 
    } else { 
     return CollectionViewCell() 
    } 
} 

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 
    if let cell = collectionView.cellForItemAtIndexPath(indexPath) as? CollectionViewCell { 
     cell.toggleSelectedState() 
    } 
} 

func collectionView(collectionView: UICollectionView, didDeselectItemAtIndexPath indexPath: NSIndexPath) { 
    if let cell = collectionView.cellForItemAtIndexPath(indexPath) as? CollectionViewCell { 
     cell.toggleSelectedState() 
    } 
} 

Zelle -

func toggleSelectedState() { 
    if selected { 
     print("Selected") 
     backgroundColor = UIColor.whiteColor() 
    } else { 
     backgroundColor = UIColor.clearColor() 
     print("Deselected") 
    } 
} 

Das Problem, das ich habe, ist die didDeselectItemAtIndexPath wird nicht aufgerufen, wenn Sie auf eine bereits ausgewählte Zelle tippen. Wenn Sie jedoch auf eine andere Zelle tippen, wird sie aufgerufen und die neue Zelle wird ausgewählt ...

Ich habe versucht, in shouldSelectItemAtIndexPath & shouldDeselectItemAtIndexPath für ausgewählte Staaten Überprüfung ich ein tapGesture Schreiben sogar versucht, dies zu umgehen und noch kein Glück ...

Gibt es etwas, was ich vermisst habe? Oder gibt es dafür bekannte Arbeitsumstände? Jede Hilfe würde sehr geschätzt werden!

+1

Wenn Sie auf dieselbe Zelle tippen, muss der 'didSelectItemAtIndexPath' erneut aufgerufen werden. überprüfen Sie bitte, dass – Shubhank

Antwort

0

Vielleicht können Sie eine UIButton() mit den gleichen Grenzen wie die Zelle erstellen und die Auswahl in der Schaltfläche identifizieren. Dann können Sie in der Tap-Aktion der Schaltfläche etwas tun, um die ausgewählte Zelle zu "verfälschen".

+0

Ahh natürlich! dachte nicht einmal daran ... Hat nicht ganz die Arbeit, wie ich gehofft habe, aber ich habe eine Benachrichtigung verwendet, um es zur Arbeit zu bekommen Danke! – Brrrrryce

0

Sie können die UICollectionView Besteck allowsMultipleSelection Eigenschaft auf YES (true), dann ist die Sammlung Ansicht nicht das vorherige Element abzuwählen.

Verwandte Themen