2010-01-21 12 views
2

Je suis en train de charger une URL distante dans un Webview, et je veux montrer un spinner pendant le chargement du contenu. J'ai le code suivant, mais le spinner ne disparaît pas quand le contenu finit le chargement. Comment faire pour que le spinner disparaisse après le chargement du contenu?Webview chargement spinner dans Xcode

NSURL *noteURL = [NSURL URLWithString:@"http://google.com/"]; 
NSString *defaultNote = @"Hello there"; 

NSRect frame = [[noteView superview] frame]; 
noteSpinner = [[[NSProgressIndicator alloc] initWithFrame:NSMakeRect(NSMidX(frame)-16, NSMidY(frame)-16, 32, 32)] autorelease]; 
[noteSpinner setStyle:NSProgressIndicatorSpinningStyle]; 
[noteSpinner startAnimation:self]; 
//webViewFinishedLoading = NO; 
[[noteView superview] addSubview:noteSpinner]; 

if (noteURL) 
{ 
    if ([noteURL isFileURL]) 
    { 
     [[noteView mainFrame] loadHTMLString:@"Release notes with file:// URLs are not supported for security reasons—Javascript would be able to read files on your file system." baseURL:nil]; 
    } 
    else 
    { 
     [[noteView mainFrame] loadRequest:[NSURLRequest requestWithURL:noteURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30]]; 
    } 
} 
else 
{ 
    [[noteView mainFrame] loadHTMLString:defaultNote baseURL:nil]; 
} 

Répondre

2

Be the frame load delegate et stop the progress indicator's animation lorsque le cadre principal fin du chargement.

Arrêtez l'animation uniquement lorsque l'image pour laquelle vous avez reçu un message de chargement terminé est l'image principale de la vue Web. Vous obtiendrez un de ces messages pour chaque image de la vue Web, y compris les images imbriquées et les cadres iFrame. Vous ne voulez pas arrêter l'animation prématurément.

+0

Comment puis-je savoir quand le châssis principal a fini de charger? – Chetan

+0

Ce que je veux dire est, où puis-je mettre la commande 'stopAnimation'? – Chetan

+1

Peu importe, je l'ai. Pour l'enregistrement, vous devez définir la fonction suivante dans la même classe: - (void) webView: (WebView *) expéditeur didFinishLoadForFrame: cadre { \t if ([cadre parentFrame] == néant) { \t \t [noteSpinner setHidden: OUI]; \t \t [affichage de l'expéditeur]; } } – Chetan