2012-10-15 26 views
6

Hiện tại tôi đang lập trình ứng dụng cho iOS bằng UIWebView. Mục tiêu của tôi là hiển thị một trang web php (từ máy chủ web của tôi) bằng cách sử dụng một WebView. Tôi khá giỏi với HTMl, CSS, JS và PHP nhưng Object C không phải là sức mạnh của tôi. Tuy nhiên, tôi quản lý để thực hiện tất cả mọi thứ và mục tiêu của tôi bây giờ (khi iOS không có kết nối internet) để hiển thị một tệp cục bộ thay vì tệp trên máy chủ sau khi thông báo lỗi. Sau khi sử dụng Google, tôi đã quản lý nó độc lập, nhưng không phải là dự phòng.Xcode & WebView: Tải html cục bộ nếu không có kết nối internet (dự phòng)

Ngay bây giờ nó hiển thị cảnh báo, nhưng sau khi chạm vào ok người dùng nhận được một trang trống. Không phải là rất thân thiện với người sử dụng :(Trong tập tin html địa phương tôi có thể thực hiện một loại "nút làm mới" .Tôi sẽ rất hạnh phúc, nếu bạn có một giải pháp (tốt hơn?)

Hệ thống của tôi: Xcode 4.5. 1 trên OS X 10.8.2

ViewController.h

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController <UIWebViewDelegate> 
@property (strong, nonatomic) IBOutlet UIWebView *webView; 
@property (weak, nonatomic) IBOutlet UIActivityIndicatorView *loadingSign; 
- (void)loadSite; 

@end 

ViewController.m

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 
@synthesize webView; 
@synthesize loadingSign; 

-(void) webViewDidStartLoad:(UIWebView *)webView { 
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; 
    [self.loadingSign startAnimating]; 
    self.loadingSign.hidden = NO; 
} 

-(void) webViewDidFinishLoad:(UIWebView *)webView { 
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 
    [self.loadingSign stopAnimating]; 
    self.loadingSign.hidden = YES; 
} 

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { 
    [self.loadingSign stopAnimating]; 
    self.loadingSign.hidden = YES; 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Keine Internetverbindung" message:@"Bitte verbinde dich mit dem Internet." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alert show]; 
} 

- (void)loadSite 
{ 
    NSString *fullURL = @"http://website.com"; 
    NSURL *url = [NSURL URLWithString:fullURL]; 
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
    [webView loadRequest:requestObj]; 
    webView.scrollView.bounces = NO; 
    webView.delegate = self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    [self loadSite]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 
+0

tải html địa phương khi lỗi xảy ra (bạn cần phải kiểm tra lý do tại sao lỗi là) từ - (void) WebView: (UIWebView *) WebView didFailLoadWithError: (NSError *) lỗi – Vjy

Trả lời

2

Bạn có thể thực hiện phương pháp UIAlertViewDelegate sau:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 

phương pháp này được gọi khi cảnh báo được loại bỏ để trong cơ thể của mình, bạn có thể tải tài nguyên cục bộ của mình làm dự phòng.

trong giao diện của ViewController của bạn, bạn nên thêm:

@interface ViewController : UIViewController <UIWebViewDelegate,UIAlertViewDelegate> 

và khi bạn alloc alertView bạn thiết lập các đại biểu để tự.

tôi muốn nói điều này:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Keine Internetverbindung" message:@"Bitte verbinde dich mit dem Internet." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
+0

Cảm ơn bạn đã giải pháp nhanh chóng. Nó hoạt động hoàn hảo. Nhưng tôi không hiểu cụm từ cuối cùng của bạn ... – ohh2ahh

Các vấn đề liên quan