多个UIWebViews,如何跟踪两者的webViewDidFinishLoad?

时间:2011-04-05 14:35:00

标签: objective-c uiwebview uiwebviewdelegate

我试过了:

- (void) webViewDidFinishLoad:(UIWebView *)webView1{

}
- (void) webViewDidFinishLoad:(UIWebView *)webView2{

}

错误是我无法重新定义相同的方法。

如果我必须使用相同的方法,我需要找出从另一方面识别一个webView的方法,我该怎么做?

干杯

3 个答案:

答案 0 :(得分:4)

- (void) webViewDidFinishLoad:(UIWebView *)webview{
     if ( webview == self.webview1 )
     {
          // in case of webview 1
     } else if ( webview == self.webview2 ) {
          // in case of webview 2
     } else {
          NSLog(@"webview %@ was not wired to a property of %@",webview,self);
     }
}

并将webview1和webview2添加为控制器的属性。 (即你需要@property行和@synthesize行)

答案 1 :(得分:1)

- (void) webViewDidFinishLoad:(UIWebView *)webView通过网页浏览的原因是您知道哪个网页浏览已完成加载。你有几个选择。

  1. 为webview1和webview2创建类变量,并将其与webview进行比较。
  2. 标记网页视图,以便了解哪一个
  3. <强> 1

    //SomeController.h
    @interface SomeController : UIViewController
        UIWebView *webView1;
        UIWebView *webView2;
    @end
    
    //SomeController.m
    ...
    - (void) webViewDidFinishLoad:(UIWebView *)webView
    {
        if(webView == webView1) { ... }
        else if(webView == webView2) { ... }
    }
    ...
    

    <强> 2

    -(void)viewDidLoad
    {
        webView1.tag = 1;
        webView2.tag = 2;
    }
    
    - (void) webViewDidFinishLoad:(UIWebView *)webView
    {
        if(webView.tag == 1) { ... }
        else if(webView.tag == 2) { ... }
    }
    

答案 2 :(得分:0)

您需要在以编程方式创建它们时保留对它们的引用,或者从Interface Builder添加它们的出口。这样您就可以将实例变量与webView方法参数进行比较,以查看哪一个已完成加载。您只需要一种方法,您可能需要read up on the subject

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
   if (webView == webView1)
   {
      // handle webView1's loading
   }
   else if (webView == webView2)
   {
      // handle webView2's loading
   }
}