我正在使用包含各种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;
}
目前没有任何事情发生。
答案 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。