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!
Wenn Sie auf dieselbe Zelle tippen, muss der 'didSelectItemAtIndexPath' erneut aufgerufen werden. überprüfen Sie bitte, dass – Shubhank