2010-10-29 37 views
2

在以前的應用程序中,我已經使用4個步驟將數據加載到UIWebView中: 1.使用NSURL連接異步獲取Web上的數據 2.當下載完成時,將NSData對象轉換爲字符串,並在顯示之前操作數據。 3.從文件在UIWebView中加載網頁內容的最佳選擇是什麼?

寫轉換後的數據輸出到doc文件夾 4.加載數據到一個UIWebView但在我目前的應用程序,我也沒必要操縱,我從網絡加載數據。我只是想異步下載,並將其加載到UIWebView,而該視圖尚不可見。然後在需要時再顯示該視圖。

使用作爲GCD塊發送的loadRequest消息會更好嗎?這是可行的嗎?我試圖避免寫入本地文件的整個混亂,然後從該文件重新加載頁面。建議?

回答

6

爲什麼不直接將NSURLRequest直接給webview

如果您不需要在傳輸過程中處理數據,它完全能夠從網絡本身加載數據。

+1

Insn't一個同步請求,如果用做的loadRequest?所以我的主要運行循環將被綁定,而這些數據是從URL中獲取的。 – 2010-10-30 23:44:50

+2

不,WebView總是異步加載東西。只有在使用NSURLConnection加載同步請求時纔是同步的。 – 2010-10-31 06:14:42

4

嘗試這樣

NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; 

NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
[webview loadRequest:request]; 

所有最優秀的。

1

UIWebView的

您可以加載像@Warrior請求已經提到 的主要優點是它的異步加載,你沒有像@Kevin Ballard提到要管理一切。

NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; 

NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
[webview loadRequest:request]; 

UIWebViewDelegate

但是,如果你希望收到當網址加載completely.You必須符合UIWebViewDelegate

@interface YourController : UIViewController <UIWebViewDelegate> 

實施

1.you必須委託設置爲自

self.yourWebView.delegate = self; 

2.you必須實現以下的委託,它是其中完成請求加載時會通知您。

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    // Do whatever you want here 
    } 

3.you必須設置的WebView委託零和停止加載的要求,並防止自己從notorius EXC_BAD_ACCESS錯誤,由於懸擺指針。你可以找到更多關於here

// If ARC is used 
- (void)dealloc { 
    [_webView setDelegate:nil]; 
    [_webView stopLoading]; 
} 

// If ARC is not used 
- (void)dealloc { 
    [webView setDelegate:nil]; 
    [webView stopLoading]; 
    [webView release]; 
    [super dealloc]; 
} 

// ARC - Before iOS6 as its deprecated from it. 
- (void)viewWillUnload { 
    [webView setDelegate:nil]; 
    [webView stopLoading]; 
} 

注:

你不應該嵌入的UIScrollView對象UIWebView的對象。如果這樣做,可能會導致意外的行爲,因爲兩個對象的觸摸事件可能混淆並被錯誤地處理。

我希望這個涵蓋最需要的最基本的東西

相關問題