我认为使用UIWebView(和delegate = self)对每个viewController实现完全相同的方法并不聪明。因此尝试使用所有UIWebView设置通用加载方法。但它没有用。 用类别来实现是不对的?
的UIWebView + Loading.m
-(void)webViewDidStartLoad:(UIWebView*)webView
{
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
}
ViewController.h
@interface ViewController : UIViewController <UIWebViewDelegate>
ViewController.m
#import "UIWebView+Loading.h"
//abbr...
-(void)viewWillAppear:(BOOL)animated
{
UIWebView *someWebView = [[UIWebView alloc] init];
someWebView.delegate = self;
//and HTTP request
NSURLRequest *req = (abbr);
[someWebView loadRequest:req];
}
答案 0 :(得分:1)
方法webViewDidStartLoad:
未被调用,因为它是UIWebViewDelegate
协议的一部分,而不是UIWebView
类本身的方法。您必须在 ViewController.m 文件中实现它。
另外,您可能需要阅读delegation pattern in iOS。
答案 1 :(得分:0)
为此目的,不需要像UIWebView + Loading.m这样的类别。
加载统计信息和委托方法
时,将执行webview委托方法- (void)webViewDidStartLoad:(UIWebView *)webView {
NSLog(@"Started loading");
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSLog(@"Finshed loading");
}
将被执行。你编写的代码就足够了。因为委托被设置为self。在viewcontroller中定义这些方法就是这样。你会让它工作