2012-06-09 23 views
3

我發現這個線程它匹配我的問題:Clicking a link in UIWebView pushes onto the NavigationView stack開口點擊一個UIWebView一個鏈接時,一個新的UIViewController

但是,下面的情況是不同的:如果不使用navigationController的 ,我使用的是查看基於應用程序在按下相應的按鈕時手動切換到不同的視圖控制器。 而不是使用鏈接我使用onClick方法來檢測用戶何時點擊UIWebView上的某些東西,並試圖用新的UIWebView打開一個新的ViewController。

將相同的代碼工作還是必須做出一些更改?

回答

11

你將不得不做一些修改

1: 時onClick,你將有你的當前頁面重定向到新的位置 這個位置,例如將是MYLocation://GoThere

第二: 更新shouldStartLoadWithRequest

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

NSURL *url = request.URL; 
NSString *urlString = url.absoluteString; 

//Check if special link 
if ([ urlString isEqualToString: @"MYLocation://GoThere" ]) { 
    //Here present the new view controller 
    MyViewController *controller = [[MyViewController alloc] init]; 
    [self presentViewController:controller animated:YES]; 

    return NO; 
} 

    return YES; 

} 
+1

Yesss。這是做這件事的標準方式。 +1。 – 2012-06-09 08:22:44

+0

行..這是工作。不過,我已經在webView委託中實現了這個方法。我不能使用自我,所以我正在調用自我的主ViewController。這導致應用程序崩潰。你能幫我麼? – CodeRed

+0

然後將代理中的某個日期傳遞給您正在使用的mainviewcontroller,並將此代碼複製到它MyViewController * controller = [[MyViewController alloc] init]; [self presentViewController:controller animated:YES];讓mainviewcontroller處理初始化並將數據傳遞給視圖,它會顯示 –

1

我想你可以使用shouldStartLoadWithRequest奧馬爾·公佈。 如果新viewcontroller有一個webviewcontroller,那麼你應該傳遞url(甚至請求)到新的viewcontroller來顯示被點擊的URL。

相關問題