2011-04-05 59 views
1

我已經試過:多個UIWebViews,我如何跟蹤webViewDidFinishLoad?

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

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

} 

的錯誤是,我不能重新定義的方法相同。

如果我必須使用相同的方法,我需要找出一種方法來識別另一個webView,我該怎麼做?

乾杯

回答

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

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 
    } 
} 
1

爲什麼- (void) webViewDidFinishLoad:(UIWebView *)webView通過網頁視圖的原因是讓你知道哪些網頁流量裝載完畢。你有幾個選擇。

  1. 爲webview1和webview2創建類變量並將其與webview進行比較。
  2. 標籤的網頁視圖,所以你知道哪一個

//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) { ... } 
}