UICollectionView Zelle kann nicht ausgewählt werden, nachdem Sie neu laden im Falle dass, wenn Zelle berührt wurde beim zurückladen
Benutze ich UICollectionView
anzeigen-server-bezogenen Informationen. Diese UICollectionView
erlaubt den Zellen Auswahl an einige geschachtelte Daten. Leider, wenn Benutzer berührt und hält alle Zellen während meine app Aufrufe [collectionView reloadData]
diese Zelle reagiert nicht mehr auf Berührungen mehr (collectionView:didSelectItemAtIndexPath:
Methode ist nicht genannt).
Kann ich wählen Sie alle Zellen außer dieser.
Erstellte ich einfache Anwendung, die dieses problem reproduzieren können: link
Irgendwelche Ideen wie man es beheben?
- +1 für den schönen test-code. Ich überschrieb touchesBegan und touchesEnded in die benutzerdefinierte Zelle, und es erhält immer noch berührt, obwohl didSelectRowAtIndexPath aufgerufen ist nicht mehr. Es ist superview ist immer noch der Ansicht Sammlung und der Rahmen ist immer noch das gleiche. Bisher sehe ich keine Grund für dieses Verhalten.
- Ich bemerkte eine andere Sache. Wenn Sie geben den Zellen einen farbigen selectedBackgroundView, die Zelle, die Sie gedrückt, während Sie den laden nie angezeigt wird, gehen Sie zurück zu den anderen Staat -- allerdings, wenn Sie sich den ausgewählten Zustand, es zeigt es als nicht ausgewählt. Ich habe sogar versucht, explizit eine Einstellung NICHT in eine überschreibung der prepareForReuse, aber das machte keinen Unterschied. Weiter unten.
- Interessanterweise, obwohl, wenn, nachdem Sie eine dieser nicht-wählbar-Zellen, wenn Sie wählen Sie eine der anderen "normalen" Zellen ist, wird es entsprechend zeigen die ausgewählten hintergrund anzeigen, und beim berühren der nicht-seelctable Zelle, die "normal" - Zelle geht zurück zu den anderen Staat. So, es scheint, dass die Auflistung anzeigen ist informiert, der touch auf den nicht auswählbaren Zelle, aber nicht den Aufruf der didSelectItem Methode. Neugierig.
- Ich habe auch versucht die Einreichung der ausgewählten und markierten Staaten in prepareForReuse mit kein Glück. KEINE AHNUNG, warum wir nicht immer didSelectItem =[
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht aus wie ein bug (ich glaube, es gibt ein ähnliches Problem, wo ein
cell.selected = YES
ohne-selectItemAtIndexPath:animated:scrollPosition:
verursacht, die die Zelle nicht in der Lage sein, nicht ausgewählte)Aber wenn Sie dies tun:
statt
[self.collectionView reloadData]
es funktioniert wie erwartet.Update: Gefunden die Antwort auf die Frage oben erwähnt
Ein weiteres Update: Es scheint, dass dies in der Tat ein Fehler war. Getestet das ursprüngliche Projekt auf die iOS8-simulator und das Problem nun behoben ist.
Als pro @Alladinian ist Antwort sagt, dass anstelle der Verwendung von
[self.collectionView reloadData]
verwendenself.collectionView reloadItemsAtIndexPaths:.....
arbeitete in Ihrem demo-und ich habe auch versucht mitEs ist auch richtig gearbeitet.