2012-03-29 13 views
0

Meine Anwendung besteht aus Daten, die aus einer XML-Datei heruntergeladen werden. Daten enthalten kurze Texte und Bilder.Daten auf benutzerfreundliche Weise vorladen

Derzeit lade ich alle Daten herunter und baue die Ansicht in einem View-Controller in der ViewDidLoad-Methode auf, was dazu führt, dass die Anwendung die Stammansicht erst anzeigt, wenn alle Daten heruntergeladen sind. Ich möchte, dass es benutzerfreundlicher angezeigt wird, zumindest um einige der Daten während des Begrüßungsbildschirms vorzuladen.

Übrigens habe ich das faule Bild geladen, so dass Bilder geladen werden können, während die Hauptansicht angezeigt wird.

Solange die Anzahl der Ansichten von der Anzahl der Zeilen in XML abhängt, wird das Laden von XML asynchron während des Aufbaus der Ansicht nicht benötigt (oder ich liege falsch).

Ich verstehe, dass die Beschreibung der Lösung in einer Antwort eine ziemliche Herausforderung ist, also könnten Sie vielleicht auf einen Artikel oder sogar ein Buch zeigen, das eine detaillierte Erklärung der asynchronen und Multithread-Behandlung bietet.

Antwort

1

Ich sehe nicht, warum Sie es nicht asynchron laden können o_O Sie sollten sowieso eine "Laden" Ansicht zeigen (vorzugsweise mit einem Aktivitätsindikator) Ein Fortschrittsbalken wäre auch nett.

Und wenn es fertig mit dem Herunterladen ist, laden Sie einfach Ihre Ansicht neu.

Wenn Sie unter "Anzahl der Ansichten" die Anzahl der Zellen in einer Tabellenzeile verstehen, können Sie der Tabellenansicht alle Daten neu laden, während Ihre numberOfRowsInSection-Funktion (oder was auch immer Sie verwenden möchten) abhängig davon, ob entsprechende Werte zurückgegeben werden es lädt oder nicht.

EDIT: Sie nicht tun sollten, während die Anwendung noch geladen wird, weil das extrem benutzerunfreundlich ist und verlangsamt das Laden der Anwendung aswell

+0

Nach Anzahl der Ansichten ich meine, dass ich eine Sammlung von scrollviews haben. Du meinst also, alles in den Viewcontroller zu laden, während ein Aktivitätsindikator angezeigt wird, und dann das Ganze neu zu laden? – Alexidze

+0

Yup Und wenn Sie etw. Wie http://allseeing-i.com/ASIHTTPRequest/ zum Herunterladen Ihrer XML verwenden, nehmen sie tatsächlich den größten Teil Ihrer Arbeit ab und zeigen sogar eine Fortschrittsleiste :) – Infinite

1

Ich glaube, Sie sollten alle Daten in didFinishLaunchingWithOptions analysieren: Methode von AppDelegate und dann Methoden verwenden folgende Analyse zu tun.

[self performSelectorInBackground:@selector(downloadData:) withObject:nil]; 

Methode Download: Parsprozedur enthalten.