2010-05-15 5 views
2

J'ai une application qui fonctionne avec des onglets et webview. Je l'ai déjà configuré pour actualiser la page affectée à un onglet chaque fois que l'élément sur la barre d'onglets est sélectionné. Mon problème est maintenant que cela prend du temps pour charger la page et il est impossible de dire si la page affichée est l'ancienne ou rafraîchie.Comment ajouter l'écran "loading" pour l'application UIWebView à chaque chargement d'une nouvelle page?

Ce que je veux faire est d'ajouter un écran de «chargement» (une image simple) qui sera affiché jusqu'à ce que la page rafraichie soit chargée. Voici la fonction que je cours sur chaque robinet d'onglet:

- (void) goToPage:(NSString *)sid 
{ 
    NSString *newURL = [NSString stringWithFormat:@"%@/mykingdom.php?sid=%@", appURL, sid]; 

    [secondView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:newURL]]]; 
} 

Merci!

+0

Je pense que ce lien sera plus d'utilisation complète pour vous. Comment ouvrir la page Web en mode web iphone [1]: http://stackoverflow.com/questions/2824845/how-to-show-a-loading-message-while-uiwebview-loads-its -content –

Répondre

5

UIWebViewDelegate dispose de 2 méthodes pratiques:

– webViewDidStartLoad:(UIWebView *)webView 
– webViewDidFinishLoad:(UIWebView *)webView 

vous pouvez facilement mettre en œuvre et faire ce que vous voulez. Cheers,

+0

Merci Marcio! Malheureusement, j'ai besoin d'un peu plus d'aide. Où dois-je mettre ce code? J'ai essayé de l'ajouter à la classe assignée au webview approprié, mais il n'est pas lancé quand je charge une page. – AragornSG

+0

Je n'ai aucune idée de votre code. Quoi qu'il en soit, je suppose que vous utilisez deux instances de uiwebview (l'une est votre secondView) peut-être dans un viewcontroller. Le viewcontroller est un bon endroit où vous pouvez implémenter les deux méthodes delegate, n'oubliez pas de définir la propriété delegate de chaque webview sur l'objet approprié (firstView.delegate = self, secondView.delegate = self): peut-être avez-vous oublié ces deux lignes de code. Sinon, vous pouvez étendre Webview et gérer ses méthodes de délégué directement dans la classe webview: si vous n'avez pas besoin d'une autre référence d'objet particulière, cela peut être très chic. – marcio

+0

ok, je l'ai compris, ajouté Image vue et basculer caché ou visible dans ces deux fonctions. – AragornSG

0

L'interface utilisateur préférée est de montrer une grande UIActivityIndicatorView. C'est l'engrenage qui fait tourner un point culminant comme s'il tournait. Si vous vouliez quelque chose d'autre, vous pouviez simplement afficher une vue modale sur l'UIWebView avec un graphique, puis l'ignorer lorsque la vue web se chargeait du chargement.

Si vous vouliez une vue Web pour afficher quelque chose, la manière la plus simple serait d'avoir des vues Web affichant la page de chargement et l'autre chargeant la page réelle. Échangez-les au besoin. Cela implique de devoir gérer le téléchargement sur une chaîne puis de le charger dans une vue Web qui peut parfois être compliquée pour les sites Web complexes.

+0

UIActivityIndicatorView n'est pas quelque chose que je recherche, parce que je veux cacher la "vieille" page pour éviter la confusion de l'utilisateur. Que voulez-vous dire par "vue modale sur l'UIWebView" et comment un code ressemblerait-il? – AragornSG

Questions connexes