現在、UIWebView を使用して iOS 用のアプリをプログラミングしています。私の目標は、WebView を使用して (Web サーバーから) PHP サイトを表示することです。HTMl、CSS、JS、PHP はかなり得意ですが、Object C は得意ではありません。しかし、私はすべてを実装することができました.私の目標は、エラーアラートの後にサーバー上のファイルではなくローカルファイルを表示することです(iOSがインターネットに接続していない場合)。Google を使用した後、私は独立してそれを行うことができましたが、フォールバックとしてではありませんでした.
現在、アラートが表示されていますが、[OK] をタップすると、ユーザーは空白のページを取得します。あまりユーザーフレンドリーではありません:(ローカルのhtmlファイルに、一種の「更新ボタン」を実装できました。(より良い?)解決策があれば、とてもうれしいです。ありがとう!
私のシステム: OS X 10.8.2 上の Xcode 4.5.1
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