XCode webview-Verbindung/server-Fehlerbehandlung
Alle,
Ich bin ziemlich neu in XCode und bin versucht in den Griff zu bekommen, wie man am besten beschäftigen sich mit Problemen, wenn Sie versuchen, eine WebView. Ich weiß, es sind Fragen auf, SO, aber, keine scheinen, bieten komplette Lösungen. Ich habe folgenden code, aber es scheint ein wenig ineffizient. Hoffentlich kann mir jemand helfen, gestalten Sie es nach unten zu einem Punkt, wo es sein kann, überall einsetzbar, die eine UIWebView genannt wird.
HINWEIS: Bitte ignorieren Sie Speicher Probleme für Sie jetzt. Ich merke, dass muss Hinzugefügt werden, wie gut.
- (void)viewDidLoad {
[webView setDelegate:self];
NSString *urlAddress = @"http://www.somesite.com/somepage";
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
NSURLConnection *urlConnection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];
[super viewDidLoad];
}
//Check for URLConnection failure
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
UIAlertView *connectionError = [[UIAlertView alloc] initWithTitle:@"Connection error" message:@"Error connecting to page. Please check your 3G and/or Wifi settings." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[connectionError show];
webView.hidden = true;
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
//Check for server error
if ([httpResponse statusCode] >= 400) {
UIAlertView *serverError = [[UIAlertView alloc] initWithTitle:@"Server error" message:@"Error connecting to page. If error persists, please contact support." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[serverError show];
webView.hidden = true;
//Otherwise load webView
} else {
//Redundant code
NSString *urlAddress = @"http://somesite.com/somepage";
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[webView loadRequest:urlRequest];
webView.hidden = false;
}
}
//Seems redundant since we are already checking the URLConnection
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
UIAlertView *connectionError = [[UIAlertView alloc] initWithTitle:@"Connection error" message:@"Error connecting to page. Please check your 3G and/or Wifi settings." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[connectionError show];
}
Ich denke, was ich Frage ist, gibt es keine Verknüpfungen zu erreichen, die gewünschte Funktionalität? Kann ich irgendwie den Zugriff auf die URLResponse über die WebView direkt? Bedeutet ein null-Wert für die URLConnection oder UIWebView bedeuten Fehler der Verbindung, ohne dass explizit überprüfen für Sie? Gibt es einen einfacheren Weg, um pass das URLRequest-nach unten in die delegate-Methoden, damit es nicht wiederhergestellt werden zweimal?
Vielen Dank im Voraus!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Laden Sie die Webseite mit NSURLRequest direkt in deine webview. Mit der delegate callback-Methoden, mit denen Sie können ändern das Verhalten von webview.
Mit diesem Stück code, den Sie sollten, um es getan.