【问题标题】:Multiple UIWebViews, how do I track webViewDidFinishLoad for both?多个 UIWebViews,我如何跟踪两者的 webViewDidFinishLoad?
【发布时间】:2011-07-30 01:03:39
【问题描述】:
我试过了:
- (void) webViewDidFinishLoad:(UIWebView *)webView1{
}
- (void) webViewDidFinishLoad:(UIWebView *)webView2{
}
错误是我无法重新定义相同的方法。
如果我必须使用相同的方法,我需要找出某种方法来识别一个 webView 和另一个,我该怎么做?
干杯
【问题讨论】:
标签:
objective-c
uiwebview
uiwebviewdelegate
【解决方案1】:
- (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 行)
【解决方案2】:
- (void) webViewDidFinishLoad:(UIWebView *)webView 传递一个 webview 的原因是为了让你知道哪个 webview 完成了加载。你有几个选择。
- 为 webview1 和 webview2 创建类变量并将其与 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) { ... }
}
【解决方案3】:
当您以编程方式创建它们或从 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
}
}