2012-01-16 4 views
1

私はさまざまなViewControllerとTableViewControllerを含むStoryBoardを使用しています。特にImageViewControllerは画像を表示するだけです。私のDetailViewControllerにはUIWebViewが含まれています。ここにはリンクがあり、押されたらImageViewControllerをロードしようとしています。IOS Push ViewController from AppDelegate.h

リンクは、私はhandleOpenURLを扱うことにより、ファイル名の値を取得

表示イメージAppDelegate.mで

`

です。

私は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を開くことを許可するよう依頼することです。

DetailViewControllerUIWebViewControllerDelegateプロトコルを実装してください。具体的には、– 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を開く権限のためにそのデリゲートを要求します。デリゲートはapplicationDidFinishLaunchingを実装する場合の方法YESかを返すために:didFinishLaunchingWithOptions: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html

はまた、アプリのデリゲートアプリケーションを持っているようにしてください:

は、この方法がdepecratedされ、それが

+0

私はそれを働かせることはできません。私はDetailViewController.hがプロトコルを実装していることを確認しました:@interface DetailWebViewController:UIViewController そしてshouldStartLoadWithRequestを追加しました。 webViewDidStartLoadとwebViewDidFinishLoadも追加しましたが、これらのメソッドは呼び出されましたが、webView.delegate = selfを追加する必要がありました。 viewDidLoadメソッドで宣言します。 WebViewでリンクをクリックすると何も起こりません。リンクは

View Image

です。何か不足していますか? – Bear

+0

URLに関連しているかどうかわかりません。何か "頼りになる"ものは何ですか?より一般的なURLを試してみてください。 'http:// www.google.com'のようなものです –

+0

私はそれを今働いています:-) – Bear

0

は注意してくださいホープ:

このメソッドは、delegateがapplication:didFinishLaunchingWithOptions:メソッドの実装からNOを返す場合には呼び出されません。アプリケーションがapplication:didFinishLaunchingWithOptions:の代わりにapplicationDidFinishLaunching:メソッドを実装している場合、このメソッドは、アプリケーションが初期化された後に指定されたURLを開くために呼び出されます。