Löschen von Zellen aus UICollectionView über NSNotification

8

Ich habe eine einfache UICollectionView-basierte App - ein UICollectionView- und ein NSMutableArray-basiertes Datenmodell zur Vereinfachung.

Ich kann Zellen über die Methode didSelectItemAtIndexPath: delegate ohne Probleme löschen:

%Vor%

Ich versuche jedoch, eine Löschoption über eine UIMenuController in einer UICollectionViewCell -Unterklasse hinzuzufügen, die über eine UILongPressGestureRecognizer ausgelöst wird, was alles gut funktioniert, und ich trigne erfolgreich eine NSNotification

%Vor%

Ich fange es in meinem ViewController und rufe die folgende Methode auf:

%Vor%

Und es stürzt bei deleteItemsAtIndexPaths ab: call

%Vor%

Ich habe alles offensichtliche überprüft - wie das Objekt von NSNotification und den indexPath, der von indexPathForCell erstellt wurde: call und es scheint alles in Ordnung zu sein. Es scheint, als würde ich deleteItemsAtIndexPath aufrufen: mit den gleichen Informationen an beiden Orten, aber aus irgendeinem Grund schlägt es fehl, wenn es über die Benachrichtigungsroute geht.

Dies ist die Information an der im Fehler angegebenen Adresse:

%Vor%

Vielleicht ist der Indexpfad nach der Aktualisierung, der Null ist, signifikant ...

Irgendwelche Ideen?

    
melps 15.10.2012, 10:58
quelle

3 Antworten

25

Ich habe eine grobe, aber funktionierende Problemumgehung gefunden und überprüft sogar, ob die Aktion bereits in einer zukünftigen Version implementiert wurde (besser als eine Kategorie)

%Vor%

Bearbeiten: Prüfung für iOS5 hinzugefügt.
Edit2: Wir versenden das in vielen kommerziellen Projekten ( Ссылка ) und es funktioniert super.

    
steipete 20.12.2012, 16:49
quelle
0

Sie könnten die NSIndexPath der ausgewählten Zelle im userInfo -Wörterbuch Ihrer Benachrichtigung übergeben. Sie können dies in tag Ihrer benutzerdefinierten Zelle festlegen, wenn sie erstellt wird.

    
swilliams 07.11.2012 03:41
quelle
0

Ich hatte das gleiche Problem. Meine App stürzte ab, als ich versuchte, eine Zelle in mein UICollectionView einzufügen, nachdem ich Text in einem UITextField ausgewählt hatte, der in einer collectionViewCell platziert wurde. Meine Lösung bestand darin, den Ersthelfer vor der Einsetzung abzutreten. Da ich ein NSFetchedResultsController verwendet habe, um die Aktualisierung zu handhaben, habe ich dies am Anfang von controllerWillChangeContent:

gestellt %Vor%

Ich habe findAndResignFirstResponder von dieser SO-Antwort gefunden

    
moshe 22.07.2013 08:43
quelle