来自AppDelegate.h的IOS Push ViewController

时间:2012-01-16 18:41:22

标签: ios uiviewcontroller

我正在使用包含各种ViewControllers和TableViewController的StoryBoard,其中一个特别是ImageViewController,它只显示一个图像。我的DetailViewController包含一个UIWebView,这里我有一个链接,按下时我正在尝试加载我的ImageViewController。

链接

查看图像

`

在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;

}

目前没有任何事情发生。

2 个答案:

答案 0 :(得分:0)

您不应该实施application:handleOpenURL:方法。它不仅被弃用,而且还要求应用程序委托允许在浏览器中打开URL。

您要做的是在UIWebViewControllerDelegate中实施DetailViewController协议。具体来说,您应该实现– 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实例会要求其代理人打开网址。

希望有所帮助

答案 1 :(得分:0)

注意,这个方法是预先指出的: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html

此外,请务必让您的app委托应用程序:didFinishLaunchingWithOptions:方法返回YES,或者如果您的委托实现applicationDidFinishLaunching:,您的代码将不会被调用:

如果委托从其应用程序的实现中返回NO,则不调用此方法:didFinishLaunchingWithOptions:method。如果您的应用程序实现applicationDidFinishLaunching:方法而不是application:didFinishLaunchingWithOptions:,则在初始化应用程序后调用此方法以打开指定的URL。