Ich habe einen UIViewController mit einem UIWebView (webview1) drin. Das Webview ist nur ein paar Textzeilen, aber hat einen Link darin. Anstatt den Link, der zu einer externen Website führt, in diesem winzigen Raum zu öffnen, möchte ich ihn an webview2 senden, das ein Vollbild sein wird. Ziel ist es, die Web-Anfragen in meiner App und nicht in Safari zu halten. Anstatt einen weiteren Controller für webview2 zu erstellen, möchte ich den Controller von webview1 verwenden.Webview-Anfrage in eine andere Webansicht werfen
In Webview1Controller Controller, Ich tue dies in webViewLoad:
webview1.delegate = self;
Hier ist, wo ich die Web-Anfrage der Hand von webview2, der gut arbeitet:
- (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;
}
In Interface Builder, ich habe webview2 Die Owner-Klasse der .xib-Datei wurde auf Webview1Controller festgelegt. Es ist "view" und das webview2outlet ist verbunden. Ich habe ein IBOutlet in Webview1Controller namens webview2outlet.
Wenn ich zurück zu webview1 gehe, hat es auch die gleiche Anfrage geladen. Gibt es eine Möglichkeit zu verhindern, dass webview1 etwas lädt? Wenn ich bei der obigen Methode NO zurücksende, wird webview1 meinen Inhalt nicht wiedergeben.
Eine Lösung besteht darin, den Inhalt von webview1 in viewWillAppear neu zu laden, was funktioniert. Aber gibt es einen besseren Weg?
Siehe Kommentar unten. – 4thSpace
Siehe bearbeitete Antwort - es ist ein bisschen lang, einen Kommentar zu schreiben. –
Perfekt. Vielen Dank. – 4thSpace