2010-01-25 9 views
1

J'ai un gros problème avec le UIWebView dans le SDK iPhone. J'ai une TabBarApplication avec un WebView sur chaque onglet (sauf le premier).iPhone SDK - Indicateur d'activité WebView

Comme il faut un certain temps pour charger les vues, j'aimerais afficher un indicateur d'activité.

Voici le code que je utilise pour le faire:

-(void)webViewDidStartLoad:(UIWebView *) portal { 

[UIApplication sharedApplication] .networkActivityIndicatorVisible = OUI; }

-(void)webViewDidFinishLoad:(UIWebView *) portal{ 
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 
} 

Il ne fonctionne pas de cette façon ... Mon WebView dans le premier onglet est appelé « portail », voilà pourquoi je suis entré au-dessus, mais le même problème existe si j'utilise WebView.

Des idées? Ne peut pas être vrai que c'est si difficile. Je suis à la recherche d'une idée qui fait un moment maintenant et je n'ai rien trouvé qui m'a aidé à construire un tel indicateur d'activité (pensez que c'est facile).

Merci beaucoup pour votre effort!

Greets de l'Allemagne Tobias

Répondre

6

J'utilise généralement un UIActivityIndicatorView.

Si vous avez un contrôleur de navigation en haut de la vue web, il fonctionne parfaitement:

-(void)webViewDidStartLoad:(UIWebView *) portal { 
UIActivityIndicatorView *actInd = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
UIBarButtonItem *actItem = [[UIBarButtonItem alloc] initWithCustomView:actInd]; 

self.navigationItem.rightBarButtonItem = actItem; 

[actInd startAnimating]; 
[actInd release]; 
[actItem release]; 
} 

Pour se débarrasser de l'indicateur:

-(void)webViewDidFinishLoad:(UIWebView *) portal{ 
self.navigationItem.rightBarButtonItem = nil; 
} 

Si vous n'utilisez un contrôleur de navigation alors je voudrais simplement utiliser soit le style plus grand, UIActivityIndicatorViewStyleWhiteLarge OU placez la vue sur une vue semi-transparente sombre sur l'écran, puis retirez-les à la fin de la charge.

+0

Merci pour votre aide rapide! Le activityIndicator ne se préoccupera pas dans mon application :( Avez-vous des idées? Je viens de copier et coller exactement comme vous postet il. Y at-il un problème avec mon TabBar? – Tobias

+0

Bien que le code était si vous Avait un UINavigationController que votre contrôleur avec webview était à l'intérieur (ce qui signifie que vous auriez une barre de navigation en haut) .Si vous n'avez pas alors vous devez ajouter l'indicateur d'activité à une autre vue, [portal addSubview: actInd] par exemple . Qu'est-ce que votre système de commande? UITabBarController> ???> UIWebView –

+0

Ahh, je vois. J'ai créé une application basée sur TabBar et juste droped les webviews dans chaque élément. chaque onglet dispose de son propre contrôleur pour le WebView. 210 J'espère que vous comprenez ce que je veux dire? Je suis complètement nouveau à Objective C et iPhone SDk ... Merci beaucoup pour votre aide! PS. Mon code ressemble maintenant à ceci: [code] - (void) webViewDidStartLoad: (UIWebView *) {portail \t UIActivityIndicatorView * actInd = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleWhiteLarge]; \t [portal addSubview: actInd]; \t [actInd startAnimating]; \t [publication actInd]; } [/ code] – Tobias