2013-07-23 31 views
0

我認爲用UIWebView(和delegate = self)對每個viewController實現完全相同的方法並不聰明。所以試圖設置所有UIWebView的通用加載方法。但它沒有奏效。 用類別實現是否是錯誤的?按類別常見的webViewDidStartLoad

的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]; 
} 

回答

1

Ť他的方法webViewDidStartLoad:未被調用,因爲它是UIWebViewDelegate協議的一部分,而不是UIWebView類的方法本身。您必須在您的ViewController.m文件中實現它。

此外,您可能想了解delegation pattern in iOS

+0

我明白用UIWebView的類別是錯誤的。我該如何實現它?我認爲使用UIWebView(和delegate = self)對每個viewController實現完全相同的方法並不聰明。我會閱讀委派模式,謝謝。 – tosin

+0

如果你有更多的包含UIWebView的視圖控制器,你可以爲它們創建一個超類(UIViewControllerWithWebView)並在其中實現UIWebViewDelegate方法。 –

0

爲此,不需要像UIWebView + Loading.m這樣的類別。

web視圖的委託方法將得到執行時加載統計數據和委託方法

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

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

將讓你寫的是enough.Since委託設置爲自我。在視圖 - 控制定義這些executed.The代碼方法和多數民衆贊成它。你會有它的工作

+0

謝謝,但我想製作一個通用的UIWebView(或UIWebViewDelegate)類,它預先設置了「webViewDidStartLoad」。 – tosin