Frage

Ich bin die Navigation von tableview1.row zu einem tableview2, die eine Menge von Zeilen geholt hat. Gegeben ist die Ladezeit ca. 3 Sekunden möchte ich die Navigation zu gleiten in tableview2 sobald die tableview1.row ausgewählt ist, und dann ein UIActivityIndicatorView oben tableview2 anzuzeigen, während die Daten abgerufen werden und dann in der zugrunde liegenden Tabellenansicht wiedergegeben. Beachten Sie, tableview2 ist eigentlich ein Subview des Mutter UIView (im Gegensatz zu den Eltern gegenüber ist ein UITableView).

Ich habe diesen Beitrag gesehen: Die Aktivitätsanzeige angezeigt werden soll, wenn sie von UITableView1 zu UITableView2 Navigation

... die Anweisungen gibt die Aktivitätsanzeige Start hinzuzufügen und stopAnimating ruft um die Daten zu holen in viewDidLoad von tableview2.

Die Sache ist, ich bin nicht sicher, wie die obige Lösung als viewDidLoad läuft und schließt vor tableview2 sichtbar Dias in Sicht funktionieren könnte.

Unabhängig davon habe ich versucht, auch eine Aktivitätsanzeige über tableview2 in IB das Hinzufügen und die Start / Stopp belebende Code in viewDidAppear IBOutlet Indikators hinzugefügt. Was passiert ist, die Daten zu holen laufen und ich kann die Anzeige Spinnen sehen, aber am Ende des Abrufs ist die Tabellenansicht leer. Scheint, wie viewDidAppear zu spät ist, Daten zu der Tabellenansicht hinzuzufügen, wie cellForRowAtIndexPath usw. bereits gebrannt.

Kann jemand bitte alle Hinweise vorschlagen? Ich konnte sehr gut etwas offensichtlich hier (seine fast 05.00, wo ich bin und denke, mein Gehirn ist breiige) fehlt. Sollte ich wieder Auslöser cellForRowAtIndexPath etc aus viewDidAppear? Ist das Problem, dass meine Tabellenansicht ist eine Subview und nicht die übergeordnete Ansicht?

Danke

War es hilfreich?

Lösung

habe ich noch einen Blick auf meine eigene Frage und die Antwort ist eigentlich ziemlich einfach. Jede sehr intensive Bearbeitung sollte in der Regel nicht auf dem Haupt-Thread ausgeführt werden. Ich versuche, meine Daten zu tun ist und intensive UI fetch Anzeige des Aktivitätsindikators auf dem gleichen Thread und so diese in Folge wurde verarbeitet, eine nach der anderen.

Lösung ist meinen neuen View-Controller und einen) Kick-off der Aktivitätsanzeige Animation auf dem Hauptthread gelangen und dann b) lief die Daten auf einem anderen Thread intensiven holen (mit performSelectorInBackground). Jegliche UI Aktualisierungen können nicht aus dem Hintergrund-Thread angewandt werden. Diese sollten handed zurück zum Hauptthread sein.

Viel SO Beiträge auf diesem bereits (zB ), mein schlecht für nicht auf diesem von Anfang Abholung:)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top