0

我认为用 UIWebView (和委托=自我)对每个 viewController 实现完全相同的方法并不聪明。因此尝试为所有 UIWebView 设置通用加载方法。但它没有用。用类别实现是错误的吗?

UIWebView+Loading.m

-(void)webViewDidStartLoad:(UIWebView*)webView
{ 
   [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
}

视图控制器.h

@interface ViewController : UIViewController <UIWebViewDelegate>

视图控制器.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];
}
4

2 回答 2

1

该方法webViewDidStartLoad:没有被调用,因为它是UIWebViewDelegate协议的一部分,而不是UIWebView类本身的方法。您必须在ViewController.m文件中实现它。

此外,您可能想了解iOS 中的委托模式

于 2013-07-23T12:38:03.110 回答
0

为此目的,不需要像 UIWebView+Loading.m 这样的类别。

webview 委托方法将在加载统计信息和委托方法时执行

- (void)webViewDidStartLoad:(UIWebView *)webView {
    NSLog(@"Started loading");
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSLog(@"Finshed loading");
}

将被执行。你编写的代码就足够了。因为委托设置为 self 。在视图控制器中定义这些方法,就是这样。你将让它工作

于 2013-07-23T13:25:59.497 回答