簡體   English   中英

在UIWebView中加載Web內容的最佳選擇是什么?

[英]What's the best option for loading web content in a UIWebView?

在之前的應用程序中,我使用4個步驟將數據加載到UIWebView中:1。使用NSURL Connection異步從Web獲取數據2.下載完成后,將NSData對象轉換為字符串,然后操作數據在顯示之前。 3.將轉換后的數據寫入doc文件夾4.將數據從文件加載到UIWebView中

但在我當前的應用程序中,我沒有必要操縱從Web加載的數據。 我只是想異步下載,並在該視圖尚不可見時將其加載到UIWebView中。 然后在我需要時顯示該視圖。

使用作為塊傳遞給GCD的loadRequest消息會更好嗎? 那可行嗎? 我試圖避免寫入本地文件的整個混亂,然后從該文件重新加載頁面。 建議?

為什么不直接將NSURLRequest提供給webview

如果您不需要按摩傳輸中的數據,它完全能夠從網絡上加載數據。

試試這樣吧

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

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

祝一切順利。

UIWebView的

您可以像@Warrior提到的那樣加載請求。主要優點是異步加載,而不必像@Kevin Ballard所提到的那樣管理所有內容。

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

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

UIWebViewDelegate

但是如果你在url完全加載時得到通知。你必須符合 UIWebViewDelegate

 @interface YourController : UIViewController <UIWebViewDelegate>

履行

你必須讓代表自己

self.yourWebView.delegate = self;

2.您必須實現以下代理,在請求加載完成時您將收到通知。

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

3.你必須將webview委托設置為nil並停止加載請求,並防止你自己因為懸空指針而導致錯誤EXC_BAD_ACCESS Bug。你可以在這里找到更多相關信息

  // 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];
} 

注意:

您不應該在UIS​​crollView對象中嵌入UIWebView對象。 如果這樣做,可能會導致意外行為,因為兩個對象的觸摸事件可能混淆和錯誤處理。

我希望這涵蓋了最需要的基本內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM