Ist es möglich, einen Rückruf zu erhalten, wenn ein UITableView neu geladen wird?

9

Ich lade einige Zellen in meiner Tabellenansicht neu. Nach dem Neuladen möchte ich einen Bildlauf durchführen, damit sie sichtbar sind. Ich kenne die Methode scrollToRowAtIndexPath: atScrollPosition:. Aber ich muss es nach dem Neuladen als erledigt bezeichnen, da das Neuladen die Reihenhöhen ändert.

Hier sind einige verwandte Fragen, die aber meine Frage nicht ganz beantworten.
UITableView, Scroll nach unten beim Neuladen?
So starten Sie UITableView auf der letzten Zelle

BEARBEITEN - Mein Neuladen fügt keine Zeilen hinzu oder löscht sie. Stattdessen lade ich eine oder mehrere Zellen neu, um aktualisierte Informationen wiederzugeben.

    
William Jockusch 08.03.2011, 21:34
quelle

2 Antworten

0

Hier sind einige Hacky-Wege, wie Sie es tun könnten:

1) Wenn Sie reloadData aufrufen, wird Ihre cellForRowAtIndexPath: delegate-Funktion für jede sichtbare Zelle einmal aufgerufen. Sie können diese zählen und dann eine Aktion auslösen, nachdem die Funktion oft genug aufgerufen wurde.

2) Ich wette, dass einige der anderen UITableViewDelegate-Funktionen auch deterministisch aufgerufen werden. Vielleicht kannst du deine Refresh-Funktion in einer dieser Funktionen aufrufen, vielleicht mit einer kleinen Verzögerung.

3) Sie könnten auch performSelector verwenden: withObject: afterDelay: after [tableView reloadData] und eine fest codierte Verzögerung verwenden.

    
Andrew Johnson 08.03.2011 22:34
quelle
-3

Keine ideale Lösung, aber ich habe es mit einer UIView-Animation und einem entsprechenden Abschluss-Callback geschafft. Ich lege das in eine UITableView-Kategorie. Funktioniert wie erwartet.

%Vor%     
RLB 16.05.2013 18:38
quelle