2012-01-16 36 views
1

我使用的StoryBoard包含各種ViewControllers和一個TableViewController,特別是一個ImageViewController,它只顯示圖像。我的DetailViewController包含一個UIWebView,在這裏我有一個鏈接,當按下我想加載我的ImageViewController。IOS從AppDelegate.h推Push ViewControl

的聯繫是

查看圖像

`

在AppDelegate.m我通過處理handleOpenURL得到的文件名值。

我是IOS新手,正在努力如何從AppDelegate.m中的handleOpenURL方法加載ImageViewController。

我的代碼是:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 

{

NSString *param = [keyValueParm objectForKey:@"filename"]; 
NSLog(@"Param: %@",param); 

ImageViewController *imageViewController =[[ImageViewController alloc]init]; 
imageViewController.imageString = param; 

UIViewController *root = self.window.rootViewController; 
[root.navigationController pushViewController:imageViewController animated:YES]; 
return true; 

}

目前沒有任何反應。

回答

0

您不應執行application:handleOpenURL:方法。不僅它已被棄用,而且它要求應用程序委託允許在瀏覽器中打開一個URL。

你想要做的是在DetailViewController中實現UIWebViewControllerDelegate協議。具體來說,你應該實施– webView:shouldStartLoadWithRequest:navigationType:方法。在它:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    [ImageViewController *imageViewController =[[ImageViewController alloc]init]; 
    imageViewController.imageString = param; 
    [root.navigationController pushViewController:imageViewController animated:YES]; 

    return YES; 
} 

在這種方法中,UIWebView例如要求其委託權限打開一個URL。

希望它可以幫助

+0

我無法得到它的工作。我確保我的DetailViewController.h實現了該協議:@interface DetailWebViewController:UIViewController 並添加了shouldStartLoadWithRequest。我還添加了webViewDidStartLoad和webViewDidFinishLoad,這些方法被調用,但我不得不添加webView.delegate = self;在viewDidLoad方法中。當我點擊webView中的鏈接時,沒有任何反應,我的鏈接是:

View Image

。我錯過了什麼嗎? – Bear 2012-01-16 19:31:41

+0

我不知道它是否可能與URL相關。那是什麼「eft」的東西?嘗試使用更常見的網址。像'http:// www.google.com'' – 2012-01-17 12:33:16

+0

我現在正在工作:-) – Bear 2012-01-17 16:22:29

0

小心,這種方法depecrated: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html

另外,一定讓自己的應用委託的application:didFinishLaunchingWithOptions:方法返回YES或者如果你的委託需要實現的applicationDidFinishLaunching: ,您的代碼將不會被調用:

如果委託從其應用程序的實現:didFinishLaunchingWithOptions:方法返回NO,則不調用此方法。如果您的應用程序實現了applicationDidFinishLaunching:方法而不是application:didFinishLaunchingWithOptions:,則會在調用該方法以在應用程序初始化後打開指定的URL。

相關問題