常见的webViewDidStartLoad按类别

时间:2013-07-23 11:25:22

标签: ios objective-c objective-c-category

我认为使用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];
}

2 个答案:

答案 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中定义这些方法就是这样。你会让它工作