私はもう試した:
- (void) webViewDidFinishLoad:(UIWebView *)webView1{
}
- (void) webViewDidFinishLoad:(UIWebView *)webView2{
}
エラーは、同じメソッドを再定義できないことです。
同じ方法を使用する必要がある場合、ある webView を別の webView から識別する何らかの方法を見つける必要があります。どうすればよいですか?
乾杯
私はもう試した:
- (void) webViewDidFinishLoad:(UIWebView *)webView1{
}
- (void) webViewDidFinishLoad:(UIWebView *)webView2{
}
エラーは、同じメソッドを再定義できないことです。
同じ方法を使用する必要がある場合、ある webView を別の webView から識別する何らかの方法を見つける必要があります。どうすればよいですか?
乾杯
- (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 行が必要です)
WebView を渡す理由- (void) webViewDidFinishLoad:(UIWebView *)webView
は、どの WebView がロードを完了したかを知るためです。いくつかのオプションがあります。
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) { ... }
}
プログラムで作成するとき、または Interface Builder からアウトレットを追加するときに、それらへの参照を保持する必要があります。そうすれば、webView
メソッド引数と比較して、どれがロードを完了したかを確認できるインスタンス変数が得られます。このために必要なメソッドは 1 つだけです。
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
if (webView == webView1)
{
// handle webView1's loading
}
else if (webView == webView2)
{
// handle webView2's loading
}
}