私の質問をご覧いただきありがとうございます。最初にアプリについて説明します。ストーリーボードと ARC を使用している iOS5.1 用のタブ バー ベースのアプリがあります。ローカル HTML ファイルを含む Web ビューを表示するビュー コントローラーを備えた 4 つのタブがあります (各ビューは、表示する HTML ファイルの異なるセットです)。
現在、ユーザーが http または https リンクに触れると、Safari で開きます。ただし、モーダルビューを介してアプリ内で開くようになりました。現在、インターフェイスを作成して表示する準備ができていますが、モーダルの「webview2」に URL を渡すことができません。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;
}
URL を Safari で開きたい場合は、これで問題なく動作します。では、この部分では...
//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;
}
Safari ではなく、クリックした URL でモーダル ビューを開く必要があります。
だから私が求めているのは... このURLを保存してモーダルビューを開き、モーダルWebビューで触れたばかりのURLを開く最良の方法は何ですか?
私はすでに閉じるボタンなどで作成されたモーダル ビューを持っています。ロード時にクリックされた URL をロードするだけで済みます。
行を介してモーダルをロードできます...
[self performSegueWithIdentifier:@"ModalWebView" sender:self];
もちろん、URL 情報や空白の Web ビューなしでロードするだけです。モーダルは WebViewController.h/m を使用します。
URLを開いて渡す方法を誰かが教えてくれれば、セグエ「ModalWebView」に読み込まれます。モーダル ビューを実行する WebViewController.h/m に含める必要があるプロパティやその他のものを作成する必要がある場合はお知らせください。おそらく -(void)prepareForSegue を使用する必要がありますか? もしそうなら、どのように?
答えは単純かもしれませんが、私はまだ初心者であり、明確な答えを見つけるのに何日も費やしました。以前にこのサイトを検索して、このサイトに関する多くの質問に対する回答を見つけましたが、残念ながら、このサイトで行き詰まっています。
お時間をいただき、ありがとうございます。