Danke, dass Sie sich meine Frage angesehen haben. Lassen Sie mich zuerst die App beschreiben. Ich habe eine Registerkartenleiste basierte App für iOS5.1, die Storyboard und ARC verwendet. Es gibt vier Registerkarten mit einem View-Controller in jeder, die eine Webview mit lokalen HTML-Dateien zeigt (jede Ansicht ist ein anderer Satz von HTML-Dateien anzuzeigen).
Wenn ein Benutzer derzeit einen http- oder https-Link berührt, wird er in Safari geöffnet. Ich möchte jedoch, dass er innerhalb der App über eine modale Ansicht geöffnet wird. Ich habe derzeit die Schnittstelle erstellt und bereit zu zeigen, aber ich kann nicht die URL an die modale "webview2" übergeben. Ich habe nach vielen Beispielen gesucht, um dies mit RSURL und Zeichenketten usw. zu tun, kann aber keine von ihnen zum Laufen bringen. Einige der Beispielcode gegeben schien nicht für meine Situation zu arbeiten.
In meiner FirstViewController.m-Datei (die in den anderen Ansichten gleich ist), habe ich...
- (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;
}
Das funktioniert gut, wenn ich die URL in Safari öffnen möchte. Also in diesem Teil...
//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;
}
Ich brauche es, um eine modale Ansicht mit der angeklickten URL zu öffnen, nicht Safari.
Was ich also wissen will, ist... Was ist der beste Weg, um diese URL zu speichern, dann öffnen Sie die modale Ansicht und dann in der modalen Webansicht öffnen Sie die URL, die gerade berührt wurde?
Ich habe bereits die modale Ansicht mit einer Schaltfläche zum Verlassen und usw. gemacht. Ich brauche es nur, um mit der angeklickten URL zu laden, wenn es lädt.
Ich kann das Modal über die Zeile ... laden.
[self performSegueWithIdentifier:@"ModalWebView" sender:self];
aber das lädt sie nur ohne URL-Informationen und natürlich mit einer leeren Webansicht. Das Modal verwendet WebViewController.h/m.
Wenn jemand mir sagen könnte, wie zu öffnen und übergeben Sie die URL, so dass es in der Segue "ModalWebView" lädt, würde ich es zu schätzen wissen. Bitte lassen Sie mich wissen, ob ich irgendwelche Eigenschaften oder etwas anderes, das ich in meinem WebViewController.h/m, die die modale Ansicht ausgeführt wird, einschließen sollte. Vielleicht muss -(void)prepareForSegue verwendet werden? Wenn ja, wie?
Mir ist klar, dass die Antwort vielleicht einfach ist, aber ich bin noch Anfänger und habe Tage damit verbracht, eine klare Antwort zu finden. Ich habe schon viele Antworten auf meine Fragen auf dieser Website gefunden, aber ich fürchte, dass ich bei dieser Frage nicht weiterkomme.
Ich danke Ihnen für Ihre Zeit und Geduld.