UITableView Abschnitt Index bezogen Abstürze unter iOS 7

9

Ich habe einen einfachen Abschnittsindex für eine Tabellenansicht, der zum ersten Mal in Ordnung ist, aber dann abstürzt, wenn bestimmte Arten der Interaktion auftreten, die ein Neuzeichnen des Abschnittsindex erzwingen, entweder durch:

  1. Drücken Sie einen View-Controller, indem Sie auf eine der Zellen tippen
  2. Tippen Sie auf die Suchleiste in der Kopfzeile der Tabellenansicht oder machen Sie sie auf andere Weise zuerst
  3. Gehen Sie zu einem Informationsbildschirm und kehren Sie dann mit dieser Tabellenansicht zum View-Controller zurück.

Wenn ich den Abschnittsindex auskommentiere (indem ich nil in sectionIndexTitlesForTableView anstelle von "[self.collation sectionIndexTitles]" zurückgebe), funktioniert es gut.

Es passiert NUR unter iOS 7 (seit den Betas und es ist nicht in der Version 7.0.1 behoben) und ich bekomme immer die folgende Stack-Ablaufverfolgung in Bezug auf CoreText / Animationen / Übergänge:

%Vor%

Ich habe es ziemlich ausgeschlossen, dass es mit dem Speicher zusammenhängt, weil es sowohl mit einem leeren Tisch als auch mit 6000 Zellen passiert.

Dies ist der Code für den Abschnittsindex:

%Vor%

Hat jemand andere ähnliche Probleme oder andere in Bezug auf Abschnittsindizes? Ich wusste, dass es einige Layoutprobleme mit dem Tabellenansichtsabschnittsindex zusammen mit Löschschaltflächen auf Bearbeitungszellen gab, aber ich bin mir nicht sicher, ob diese auch behoben wurden. Ich vermute, es ist nur ein Fehler in iOS 7?

    
user2799394 20.09.2013, 14:17
quelle

4 Antworten

3

Das Problem scheint damit zu tun zu haben, dass ein reloadData-Aufruf von einem Hintergrundthread in einem Hintergrundthread versucht wird, in meinem Fall. Ich vermute, dass die Daten in der Ansicht nicht mit dem Index oder etwas in der Art übereinstimmten.

Seltsam, wie es sich in der in der CoreText-Bibliothek (wie in der Stack-Kurve oben gesehen) und nur auf iOS 7 gesehenen Form manifestiert.

Beim Absetzen des Aufrufs in der Hauptwarteschlange zum erneuten Laden der Daten der Tabellenansicht wurde die Leistung beim erneuten Laden verbessert, und ich konnte den Abschnittsindex erneut verwenden. Ich hatte diesen Absturz seither nicht mehr.

Sehen Sie, ob dies das Problem für Sie löst.

    
user2799394 06.12.2013, 14:47
quelle
3

Ich habe dieses genaue Problem erlebt. Ich habe das nach Tagen der Frustration gelöst, indem ich eine Indexansicht für einen Drittanbieterabschnitt verwendet und nicht das native sectionIndexTitlesForTableView verwendet habe. Sehen Sie sich CMIndexBar an. Super einfach, in ca. 5 Minuten ist es gelaufen. Leicht anpassbar. Dies ist, was ich verwenden werde, bis Apple diesen Fehler adressiert und ich empfehle es sehr, wenn Sie diesen Absturz erfahren.

    
Patrick Goley 25.09.2013 16:27
quelle
0

Ich habe festgestellt, dass das Problem in der Funktion liegt:

%Vor%

Nach iOS 7.0 stimmt etwas mit dem Section-Index-Algorithmus nicht. Offensichtlich handelt es sich um einen Framework-Fehler. Ich beendete etwas in der Art:

%Vor%

Dies ist ein hässlicher Patch, der die Buchstabenleiste von der rechten Seite Ihres Bildschirms entfernt, aber zumindest wird Ihre App nicht abstürzen.

    
Sharon Brizinov 21.12.2013 21:23
quelle
-2

Es wurde in der 7.1 Beta behoben.

    
Philip McDermott 25.11.2013 13:57
quelle