如何在多个webview中停止多个活动指示器动画?

时间:2012-03-17 04:42:56

标签: iphone ipad uiwebview uiactivityindicatorview

目前我正在开发一个示例,我在ipad屏幕上显示4个webview并尝试在其中显示4个不同的URL。

所有网页都完美地显示在网页浏览中。

一旦网页开始加载,我也会显示4个活动指示。

但是我无法弄清楚如何在将所有相关网页加载到屏幕后逐一停止活动指示器。

-(void)createWebView
{

    //******************** First *********

    firstWebView=[[UIWebView alloc]init];
    firstWebView.frame=CGRectMake(10, 50, 350, 470);
    firstWebView.delegate=self;
    firstIndicator = [[UIActivityIndicatorView alloc] 
                                        initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    firstIndicator.center = CGPointMake(160, 240);
    firstIndicator.hidesWhenStopped = YES;
    [self.firstWebView addSubview:firstIndicator];
    [firstIndicator startAnimating];
    firstWebView.backgroundColor=[UIColor grayColor];
     NSURL *firstUrl = [NSURL URLWithString:@"http://www.techtree.com"];
     NSURLRequest *firstRequestObj = [NSURLRequest requestWithURL:firstUrl];
    [firstWebView loadRequest:firstRequestObj];
    [self.view addSubview:firstWebView]; 

    //******************* Second *********

    secondWebView=[[UIWebView alloc]init];
    secondWebView.frame=CGRectMake(405, 50, 350, 470);
    secondWebView.delegate=self;

    secondIndicator = [[UIActivityIndicatorView alloc] 
                      initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    secondIndicator.center = CGPointMake(160, 240);
    secondIndicator.hidesWhenStopped = YES;
    [self.secondWebView addSubview:secondIndicator];
    [secondIndicator startAnimating];
    secondWebView.backgroundColor=[UIColor grayColor];

    NSURL *secondUrl = [NSURL URLWithString:@"http://www.facebook.com"];
    NSURLRequest *secondRequestObj = [NSURLRequest requestWithURL:secondUrl];
    [secondWebView loadRequest:secondRequestObj];
    [self.view addSubview:secondWebView]; 


    //****************** Third ************

    thirdWebView=[[UIWebView alloc] init];
    thirdWebView.frame=CGRectMake(10, 528, 350, 470);
    thirdWebView.delegate=self;


    thirdIndicator = [[UIActivityIndicatorView alloc] 
                       initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    thirdIndicator.center = CGPointMake(160, 240);
    thirdIndicator.hidesWhenStopped = YES;
    [self.thirdWebView addSubview:thirdIndicator];
    [thirdIndicator startAnimating];

    thirdWebView.backgroundColor=[UIColor grayColor];

    NSURL *thirdUrl = [NSURL URLWithString:@"http://www.yahoo.com"];
    NSURLRequest *thirdRequestObj = [NSURLRequest requestWithURL:thirdUrl];
    [thirdWebView loadRequest:thirdRequestObj];
    [self.view addSubview:thirdWebView];

    //***************** Fourth ************
    fourthWebView=[[UIWebView alloc] init];
    fourthWebView.frame=CGRectMake(405,528, 350, 470);
    fourthWebView.delegate=self;


    fourthIndicator = [[UIActivityIndicatorView alloc] 
                      initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    fourthIndicator.center = CGPointMake(160, 240);
    fourthIndicator.hidesWhenStopped = YES;
    [self.fourthWebView addSubview:fourthIndicator];
    [fourthIndicator startAnimating];

    fourthWebView.backgroundColor=[UIColor grayColor];

    NSURL *fourthUrl = [NSURL URLWithString:@"http://stackoverflow.com"];
    NSURLRequest *fourthRequestObj = [NSURLRequest requestWithURL:fourthUrl];
    [fourthWebView loadRequest:fourthRequestObj];
    [self.view addSubview:fourthWebView];


    //******************** Memory Managemt **********
    [firstWebView release];
    [secondWebView release];
    [thirdWebView release];
    [fourthWebView release];

    [firstIndicator release];
    [secondIndicator release];
    [thirdIndicator release];
    [fourthIndicator release];


}

1 个答案:

答案 0 :(得分:0)

overwrite below delegate method and check which webview is loading finished like below

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
   if(webView== firstWebView)
   { 
     [firstIndicator setHidden:YES];
   }
  else
  {
     so on...
  }
}