9
votes

Comment implémenter un uiactivitéIndicatorView lorsque l'UIWebView est en cours de chargement? (iphone objc)

Je veux savoir comment implémenter un activitéIndicator dans une application Webview basée sur WebView, j'ai écrit le code suivant, mais l'indicateur n'apparaît pas.

Le fichier webview Load localement, de sorte qu'il charge très vite, mais quand il charge un Page externe Il charge lent et j'ai besoin de l'indicateur ... p>

FirstViewController.h stry> p>

 #import "FirstViewController.h"

 @implementation FirstViewController


 @synthesize m_activity;

 // viewWillAppear loads every time younopen up this View

 - (void)viewWillAppear:(BOOL)animated {
   NSString *filePath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];          
   urlLocation = [NSURL fileURLWithPath:filePath];  
   [webview1 loadRequest:[NSURLRequest requestWithURL:urlLocation]]; 
 }




 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {     
  if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {      
     //Initialization code      
     m_activity = nil;  
   }    
   return self; 
 }

 - (void)webViewDidFinishLoad:(UIWebView *)webView {    
   m_activity.hidden= TRUE;     
   [m_activity stopAnimating];  
   NSLog(@"Web View started loading...");
 }

 - (void)webViewDidStartLoad:(UIWebView *)webView {     
   m_activity.hidden= FALSE;    
   [m_activity startAnimating];     
   NSLog(@"Web View Did finish loading");
 }


0 commentaires

3 Réponses :


2
votes

Quel est le problème ici, le code que vous avez affiché ci-dessus devrait fonctionner, sauf que vous initialisez l'indicateur nulle part (peut-être que vous avez dans la vue ci-dessus), mais le code présenté ci-dessus doit fonctionner étant donné que l'indicateur a été initialisé correctement et que vous définissez la webview. D Elegate au contrôleur d'affichage là-bas, je travaille sur certaines de mes applications où j'utilise webviews et indicateurs pour indiquer quand son chargement ...


0 commentaires

19
votes

Pourquoi définissez-vous votre indicateur d'activité à NIL dans votre init? XXX

L'appel à Super Initialisez votre indicateur de votre XIB (en supposant que vous l'avez connecté à votre sortie dans IB), mais Ensuite, vous définissez la référence à NIL après avoir été initialisée. Supprimer cette ligne. Ensuite, revenez dans l'interface Builder et réglez la case "Masquer lors de l'arrêt". Maintenant, vous pouvez simplifier votre code qui affiche l'indicateur: xxx

la "masquage lors de l'arrêt" provoque la peau de l'indicateur lorsque vous l'arrêtez d'animation.


1 commentaires

Vous n'avez pas besoin de l'éteindre dans DidfailloadwithError Méthode?



0
votes

UIWebView.Loading Propriété peut également être utilisé.

Doc de Apple: @Property (nonatomic, loadonly, getter = ischarger) BOOL Loading La description Une valeur booléenne indiquant si le récepteur est effectué le contenu du chargement. (lecture seulement) Si oui, le récepteur est toujours en cours de chargement. Sinon, non.

Dans iOS6, on dirait que Apple a également corrigé des problèmes avec cette propriété. http://code-gotcha.blogspot.fi /2012/08/UIIwebViewloading-in-ios-6-fixed.html


0 commentaires