2011-10-03 52 views
2

我有一個視圖控制的應用程序。在我的xib上,我沒有網頁瀏覽,但是我有一些按鈕,可以顯示帶有網頁瀏覽的類。所以點擊按鈕一個和一個uiwebview彈出如此等等。shouldStartLoadwithRequest未在子類中調用

現在在我的一個課上,我拉起了一個遠程網頁,其上有一個鏈接。我想用shouldStartLoadwithrequest替代那個按鈕鏈接。這似乎永遠不會被調用。

現在我的類被稱爲Tenth.m,我有這樣的代碼在我的視圖控制器

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType { 

NSLog(@" Test spot 1"); 
NSString* scheme = [[request URL] scheme]; 
if ([@"didTap" isEqual:scheme]) { 
    // Call your method 
    NSLog(@" Test spot 2"); 
    [self didTapButton1]; 
    return NO; 
} else { 
    NSLog(@" Test spot 3"); 
    return YES; 
}} 

但我什麼也沒有(沒有我的NSLogs的)。我曾嘗試將此放入我的Tenth.m班,但仍然沒有任何結果。我看過其他例子,甚至下載了一個,但它只使用viewcontroller和委託類。沒有第三堂課。

我失去了爲什麼它沒有被調用。

這是我的第三類

#import "Tenth.h" 


@implementation Tenth 

- (void)awakeFromNib 
{ 
[category10 loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.mywebsite.com/api/didtap.php"]]]; 

} 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
if (self) { 
    // Custom initialization 
} 
return self; 
} 

- (void)dealloc 
{ 
[super dealloc]; 
} 

- (void)didReceiveMemoryWarning 
{ 
// Releases the view if it doesn't have a superview. 
[super didReceiveMemoryWarning]; 

// Release any cached data, images, etc that aren't in use. 
} 

#pragma mark - View lifecycle 
/* 
// Implement loadView to create a view hierarchy programmatically, without using a nib. 
- (void)loadView 
{ 
} 
*/ 


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad 
{ 

[super viewDidLoad]; 
} 


- (void)viewDidUnload 
{ 
[super viewDidUnload]; 
// Release any retained subviews of the main view. 
// e.g. self.myOutlet = nil; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
// Return YES for supported orientations 
return YES; 
} 

@end 

遠程頁面代碼

<a href="didTap://button1">hello</a> 

Tenth.h文件

#import <UIKit/UIKit.h> 


@interface Tenth : UIViewController <UIWebViewDelegate> { 

IBOutlet UIWebView *category10; 

} 

-(IBAction)back; 
@end 
+0

1.您設定的WebView委託'self'? 2.不應該'[@「didTap」isEqual:scheme]''[@「didTap」isEqualToString:scheme]'? –

回答

5

我的第一個猜測是,Web視圖不具有其委託組。爲了讓它打電話

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType 

包含此方法的類需要設置爲webview的委託。因此,代碼中的某處應該有一條類似於webView.delegate = <variable>的行,其中變量是實施了shouldStartLoadWithRequest:方法的類的實例。

當webView是viewController視圖的子視圖時,這通常是「自我」。但是,你描述你的應用程序的方式,我不確定它是否是自我的,但它聽起來像它不會是自己的,而是不同類的實例的名稱。

+0

所以我可以找到的是webview.delegate = self進入Tenth.m文件的viewdidload(見上文)。但我然後得到錯誤:使用未聲明的標識符「webView」 – Rick

+0

好吧,使用webView視圖變量的名稱,無論它被稱爲。 –

+0

不笑。但我在哪裏可以找到?在我的viewcontoller中,我設置了iboutlet第十*十;那是我在找什麼?如果是的話,它會給出一個錯誤的屬性代理找不到對象的類型'第十' – Rick

1

也許試試這個:

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

    // Remember to set web view delegate to self. 
    category10.delegate = self; 
} 
相關問題