Ich versuche einen UIProgressView-Fortschrittsbalken zu aktualisieren, den ich während eines langen Ressourcenladeprozesses in einer UIView habe. Nehmen wir an, ich lade eine Reihe von Bitmaps aus einer NIB-Datei (wie vielleicht hundert). Nachdem ich 10 geladen habe, erstelle ich einen .progress auf das UIProgressView, das Teil einer UIView ist, die bereits angezeigt wird. Also, ich Ausgabe:UIProgressView wird nicht aktualisiert, während meine App ihre Ressourcen lädt
myView.myProgressView.progress=0.2;
Dann lade ich weitere 10 Bitmaps und Ausgabe:
myView.myProgressView.progress=0.4;
etc., etc. Wenn die App läuft, wird der Fortschrittsbalken nicht weiter. Es bleibt einfach in seiner ursprünglichen Position. Auf die Gefahr hin, wie ein kompletter Idiot zu klingen, muss ich meine Ressourcen in einen separaten Thread laden, damit das Betriebssystem die Benutzeroberfläche aktualisieren kann, oder gibt es einen einfacheren Weg? Danke für jegliche Hilfe.
Hallo, Marc, Ich habe versucht, Ihre performSelector Ansatz ohne Erfolg. Die Methode setProgressBar wurde NACH all meinem anderen Code aufgerufen. Ich habe nicht einmal versucht, das UIProgressView zu aktualisieren. Ich legte einfach einen NSLog in setProgressBar und das kam nach allen anderen Ressourcen laden Methoden auf der Konsole heraus. Irgendwelche anderen Vorschläge ? Kannst du mich auf eine Referenz verweisen, um vielleicht all das in einem anderen Thread zu tun? – kspeacock
Hoppla. Die Idee ist also richtig, Sie müssen die Daten in einem Thread aktualisieren und den Hauptthread (UI-Thread) dabei nicht blockieren. Ich denke, dass Sie performSelectorOnMainThread verwenden müssen, wenn Sie diesen Ansatz verwenden (suchen Sie auf der Entwicklerseite nach den Dokumenten zu diesem Thema). – marcc