1

私はもう試した:

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

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

}

エラーは、同じメソッドを再定義できないことです。

同じ方法を使用する必要がある場合、ある webView を別の 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. ウェブビューにタグを付けて、どれがどれかがわかるようにする

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メソッド引数と比較して、どれがロードを完了したかを確認できるインスタンス変数が得られます。このために必要なメソッドは 1 つだけです

- (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 に答える