Frage

mein Haupt UIViewController sollte für einige Daten-Updates überprüfen, wenn es geladen wird, wenn eine Update gefunden wird eine undurchsichtige Subview hinzugefügt werden Fortschritte zu zeigen, und so weiter.

Lassen Sie uns sagen, dass das Verfahren checkUpdates genannt wird, so in meinem AppDelegate i wie folgt vor:

[window addSubview:viewController.view];
[window makeKeyAndVisible];

[viewController checkUpdates];

Das Verfahren ist wie

- (void) checkUpdates {
    // add the opaque progress view
    [self.view addSubview:progress.view];
    [progress setMessage: @"Checking for updates ..."];

    // ... perform the update ...

    // remote the progress view
    [progress.view removeFromSuperview];
}

Theoretisch sollte die Ansicht laden und der Update-Prozess gesehen werden soll, aber das Problem ist, dass die Sicht gerade in dieser Phase eingefroren werden, und wenn der Update-Vorgang abgeschlossen ist, ich bin die Lage, mit ihr zu interagieren.

Jede Idee?

War es hilfreich?

Lösung

Da die Benutzeroberfläche läuft auf dem Hauptthread des App, wenn Sie „arbeitet“ Aufgaben auf dem Haupt-Thread ausführen, werden Sie auch die Benutzeroberfläche sperren, die deshalb eingefroren aussehen werden.

Sie könnten in Erwägung ziehen mit NSOperationQueue oder etwas Gleichwertiges zu Spin-off eines anderen Thread Ihre Arbeit zu tun, damit die Benutzeroberfläche unabhängig Prozess Updates fortgesetzt werden kann.

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