感谢您查看我的问题。让我先描述一下该应用程序。我有一个适用于 iOS5.1 的基于选项卡栏的应用程序,它使用情节提要和 ARC。有四个选项卡,每个选项卡都有一个视图控制器,显示带有本地 HTML 文件的 Web 视图(每个视图是要显示的一组不同的 html 文件)。
目前,当用户触摸 http 或 https 链接时,它将在 Safari 中打开。但是,我现在希望它通过模式视图在应用程序内打开。我目前已创建界面并准备显示,但无法将 URL 传递到模式的“webview2”。我已经查找了许多使用 RSURL 和字符串等来执行此操作的示例,但无法让它们中的任何一个工作。给出的一些示例代码似乎不适合我的情况。
在我的 FirstViewController.m 文件(在其他视图中相同)中,我有......
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
//Gets the link.
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
NSURL *URL = [request URL];
NSLog(@"url:%@",request); //Get's the url itself
//If it's an external link...
if ([[URL scheme] isEqualToString:@"http"] ||
[[URL scheme] isEqualToString: @"https" ]) {
[[UIApplication sharedApplication] openURL:[request URL]];
NSLog(@"Opened in Safari");
return NO;
}
//If it's an email address...
else if ([[URL scheme] isEqualToString:@"mailto"]) {
[webView loadRequest:request];
[[UIApplication sharedApplication] openURL:[request URL]];
NSLog(@"Opened in Mail App");
return NO;
}
}
return YES;
}
如果我想在 Safari 中打开 URL,这可以正常工作。那么在这一部分...
//If it's an external link...
if ([[URL scheme] isEqualToString:@"http"] ||
[[URL scheme] isEqualToString: @"https" ]) {
[[UIApplication sharedApplication] openURL:[request URL]];
NSLog(@"Opened in Safari");
return NO;
}
我需要它来打开带有单击的 URL 的模态视图,而不是 Safari。
所以我要问的是...保存此 URL,然后打开模式视图,然后在模式 Web 视图中打开刚刚触摸的 URL 的最佳方法是什么?
我已经有了使用关闭按钮等制作的模态视图。我只需要它在加载时使用单击的 URL 进行加载。
我可以通过线路加载模态...
[self performSegueWithIdentifier:@"ModalWebView" sender:self];
但这只是加载它,没有任何 URL 信息和空白的 webview,当然。该模式使用 WebViewController.h/m。
如果有人能告诉我如何打开并传递 URL,以便它加载到 segue“ModalWebView”中,我将不胜感激。如果我需要在运行模态视图的 WebViewController.h/m 中添加任何属性或其他任何内容,请告诉我。也许需要使用 -(void)prepareForSegue ?如果是这样,怎么办?
我意识到答案可能很简单,但我仍然是一个初学者,花了几天时间试图找到一个明确的答案。我之前通过搜索在这个网站上找到了很多问题的答案,但恐怕我被困在这个问题上了。
感谢您的时间和耐心。