2012-01-29 10 views
3

ページをダウンロードしてWEBVIEWローカルに表示したいが、画像が欠けている。画像は私がオンラインのときにのみ表示され、オフラインモードでは表示されません。これをどうすれば解決できますか?これは私が今まで使用したコードです:Xcode UIWEBVIEWダウンロード、HTMLファイルを保存して表示

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 

- (void)viewDidLoad 
{ 

    NSURL *url = [NSURL URLWithString:@"http://livedemo00.template-help.com/wt_37587/index.html"]; 


    //[WEBVIEW loadRequest:reqURL]; 


    // Determile cache file path 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *filePath = [NSString stringWithFormat:@"%@/%@", [paths objectAtIndex:0],@"index.html"]; 

    // Download and write to file 

    NSData *urlData = [NSData dataWithContentsOfURL:url]; 
    [urlData writeToFile:filePath atomically:YES]; 

    // Load file in UIWebView 
    [WEBVIEW loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:filePath]]];  



    [super viewDidLoad]; 
} 

答えて

4

私は今、数週間のためにこれを書くために意味してきたが、この問題は最終的に私はそれを行うようになりました。 Drop-in offline caching for UIWebView (and NSURLProtocol)を参照してください。

短い答えは、私の経験では、最も簡単な解決策は、(UIWebViewによって作られたものを含む)NSURLConnection要求をインターセプトするNSURLProtocolを使用して、結果をディスクに書き込むことがあるということです。オフラインのときにリクエストが行われた場合は、ディスクからレスポンスを読み込んで再生してください。これは、アプリケーションの残りの部分に対して非常に透過的であり、NSURLCacheのサブクラス化に関連するあらゆる種類のエッジケースを回避します。 (NSURLCacheをサブクラス化する方法の詳細についてはココアと恋にSubstituting local data for remote UIWebView requestsを参照してください、そしてAFCache。)

NSURLProtocolアプローチは非常に簡単で、かつ汎用のキャッシング・ソリューションではありません。オフライン時にUIWebViewをアシストするためのものです。しかし、それは問題をうまく解決すると思う。

関連する問題