UIWebView (webview1) を含む UIViewController があります。WebView は数行のテキストですが、リンクが含まれています。この小さなスペースで外部 Web サイトに移動するリンクを開くのではなく、フルスクリーンになる webview2 に送信したいと思います。目標は、Web リクエストを Safari ではなくアプリ内に保持することです。webview2 用に別のコントローラーを作成する代わりに、webview1 のコントローラーを使用したいと思います。
Webview1Controller コントローラーでは、webViewLoad でこれを行います。
webview1.delegate = self;
ここで、web リクエストを webview2 に渡します。これは正常に機能します。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
myapp *delegate = [[UIApplication sharedApplication] delegate];
Webview1Controller *webview1Controller = [[Webview1Controller alloc] initWithNibName:@"webview2" bundle:nil];
//self.view = webview2;'
[delegate.navigationController pushViewController: webview1Controller animated:YES];
[webview1Controller.webview2 loadRequest:request];
[webview1Controller release];
return YES;
}
Interface Builder では、webview2.xib ファイルの Owner クラスを Webview1Controller に設定しています。「view」とwebview2outletが接続されています。Webview2outlet という名前の Webview1Controller に IBOutlet があります。
webview1 に戻ると、同じリクエストも読み込まれています。webview1 が何かをロードするのを止める方法はありますか? 上記のメソッドで NO を返すと、webview1 はコンテンツをレンダリングしません。
1 つの解決策は、viewWillAppear で webview1 コンテンツをリロードすることです。しかし、より良い方法はありますか?