我使用的是一个包含各种ViewControllers的StoryBoard和一个TableViewController,特别是ImageViewController,它只显示一个图像。我的DetailViewController包含一个UIWebView,这里我有一个链接,当按下时,我正在尝试加载我的ImageViewController。
链接是
查看图像
`
在AppDelegate.m中,我通过处理handleOpenURL来获得filename值。
我是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;}
目前什么也没发生。
发布于 2012-01-17 02:45:32
您不应该实现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的权限。
希望能有所帮助
发布于 2012-01-17 02:46:32
当心,这个方法被去掉了:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html
此外,请确保让您的应用程序委托应用程序:didFinishLaunchingWithOptions:方法返回YES,或者如果您的委托实现了applicationDidFinishLaunching:,您的代码将不会被调用:
如果委托从其应用程序的实现中返回NO,则不会调用此方法:didFinishLaunchingWithOptions:方法。如果您的应用程序实现了applicationDidFinishLaunching:方法而不是application:didFinishLaunchingWithOptions:,则在应用程序初始化后调用此方法以打开指定的URL。
https://stackoverflow.com/questions/8884721
复制相似问题