2012-01-12 11 views
1

私が開発した雑誌のiPadアプリを試していて、メモリの問題に遭遇しました。 UIScrollViewに複数のUIWebViewがあります。すべてのUIWebViewは、htmlファイルソースからそれぞれのhtmlページを表示します。残念ながら、私はそれらが一度表示されたいので、すべてのHTMLページをすべてのjavascriptと画像でロードして起動するのではなく、アプリケーションがロードされた後、バックグラウンドでスムーズにロードするためにWebビューを処理するソリューションを見つけることができませんでした私はそれらを介してスワイプ、私は30パネルで "メモリの警告を受け取った"メッセージを取得し、アプリケーションが壊れてしまう。UIScrollView上の複数のUIWebView-s

私は、Webビューを表示するために使用するコードはこれです:質問は、私はそれらを読み込むことができる方法である

NSString *htmlPath = [[NSBundle mainBundle] pathForResource:htmlfilename 
                 ofType:@"html" 
                inDirectory:@"/htdocs" ]; 

    NSString *html = [NSString stringWithContentsOfFile:htmlPath 
               encoding:NSUTF8StringEncoding 
                error:nil]; 

    web.delegate = self; 
    [web setMultipleTouchEnabled:YES]; 
    [web loadHTMLString:html 
       baseURL:[NSURL fileURLWithPath: 
         [NSString stringWithFormat:@"%@/htdocs/", 
          [[NSBundle mainBundle] bundlePath]]]]; 

- (void)dealloc { 
    //---release the memory used by the property--- 
    [page release]; 


    [web setDelegate:nil]; 
    [web stopLoading]; 
    [web release]; 


    [orientation release]; 
    [page release]; 

    [super dealloc]; 
} 

NSInteger numberOfViews = 47; 
for (int i = 0; i < numberOfViews; i++) { 
    CGFloat yOrigin = i * 768; 
    DetailViewController *detailViewController2 = [[DetailViewController alloc] initWithNibName:@"Detail" bundle:nil]; 

    [detailViewController2.view setFrame:CGRectMake(yOrigin, 0, 768, 1024)]; 
    detailViewController2.view.clipsToBounds = YES; 
    [scroll.view insertSubview:detailViewController2.view atIndex:0];   
} 

scroll.scrollView.contentSize = CGSizeMake(768 * numberOfViews,1004); 
scroll.pageControl.numberOfPages = numberOfViews; 

self.view.clipsToBounds = YES; 
self.view.clearsContextBeforeDrawing = YES; 
CGRect frame; 
frame.origin.x = scroll.scrollView.frame.size.width * scroll.pageControl.currentPage; 
frame.origin.y = 0; 
frame.size = scroll.scrollView.frame.size; 
[scroll.scrollView scrollRectToVisible:frame animated:NO]; 
self.scrollViewController = scroll; 
[self.view insertSubview:scroll.view atIndex:0]; 

- (void)dealloc { 
    [scrollViewController release]; 
    [tableOfContentsViewController release]; 

    [portrait release]; 
    [tableOfContents1 release]; 
    [start release]; 

    [super dealloc]; 
} 

HTMLコンテンツを表示するコードDetaildViewController内れますスムーズにUIScrollViewのバックラウンドで、パネルがビューポートにバウンスするとjavascriptのみが起動し、htmlページで60以上のWebviewを表示する予定ですか?

答えて

0

ビューをリサイクルする必要があります。一度に1つしか表示されない場合は、多数のビューを作成することは良い戦略ではありません。 Appleには、このビデオに関する長編ビデオチュートリアルがあります。基本的な考え方は、最大で3つまたは4つのビュー(UiWebViews)を使用することです。あなたがスワイプし、ビューの境界が目に見えるようになると、それを初期化します。それがもはや目に見えなくなったら、あなたはそれを破壊する。 Wall Street Journal iPad & iPhoneアプリも同様のパターンを使用しています。 ここにいくつかのリソースへのリンク&チュートリアル: Are there any good UIScrollView Tutorials on the net?

+0

リサーチウェブサイトへのリンクがありますか? –

関連する問題