1

我试过了:

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

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

}

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

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

干杯

4

3 回答 3

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 行)

于 2011-04-05T14:39:09.500 回答
1

传递一个 webview的原因- (void) webViewDidFinishLoad:(UIWebView *)webView是为了让你知道哪个 webview 完成了加载。你有几个选择。

  1. 为 webview1 和 webview2 创建类变量并将其与 webview 进行比较。
  2. 标记 webviews,以便您知道哪一个

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) { ... }
}
于 2011-04-05T14:42:32.357 回答
0

当您以编程方式创建它们或从 Interface Builder 为它们添加插座时,您需要保留对它们的引用。这样,您将拥有实例变量,您可以将其与webView方法参数进行比较,以查看哪个已完成加载。您只需要一种方法,您可能需要阅读该主题

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
   if (webView == webView1)
   {
      // handle webView1's loading
   }
   else if (webView == webView2)
   {
      // handle webView2's loading
   }
}
于 2011-04-05T14:40:37.380 回答