Ich habe eine UITabBar + UINavigationController-Anwendung, die oft Daten aus dem Internet benötigt. Manchmal dauert es eine ganze Weile, bis es ankommt, daher möchte ich einen Aktivitätsindikator anzeigen.Aktivitätsanzeige in einer UITabBar-Anwendung auf dem iPhone
Was ich versuche, ist einen activityView zu meinem Fenster in meiner applicationDidFinishLaunching Methode hinzufügen:
[window addSubview:tabBarController.view];
fullscreenLoadingView.hidden = YES;
[window addSubview:fullscreenLoadingView];
Und dann füge ich die Anwendung delegiert als Beobachter an das Standardbenachrichtigungszentrum:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(startFullscreenLoading:) name:@"startFullscreenLoading" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stopFullscreenLoading:) name:@"stopFullscreenLoading" object:nil];
und implementieren die Methoden:
- (void)startFullscreenLoading:(NSNotification *)notification {
fullscreenLoadingView.hidden = NO;
}
- (void)stopFullscreenLoading:(NSNotification *)notification {
fullscreenLoadingView.hidden = YES;
}
Wenn ich diese dann verwenden direkt im applicationDidFinishLaunching Methode zeigt die Ladeanzeige Ansicht upp wie erwartet:
[[NSNotificationCenter defaultCenter] postNotificationName:@"startFullscreenLoading" object:self];
Aber wenn ich es von einem der Navigations-Controller verwenden die startFullscreenLoading: Methode aufgerufen wird, aber ich habe nicht die Ladeanzeige Ansicht sehen. Warum das?
Ok ich verstehe, nein, ich war es in den Haupt-Thread geladen, dachte ich, dass der Haupt-Thread zunächst die Benachrichtigung senden würde und tun die Methode und danach würde es die Daten laden. Aber ok, ich sehe, ich versuche es in einen anderen Thread zu laden. – Jeena
Danke, das war mein Problem und es ist jetzt behoben :-) – Jeena