[英]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];
}
注意:
您不應該在UIScrollView對象中嵌入UIWebView對象。 如果這樣做,可能會導致意外行為,因為兩個對象的觸摸事件可能混淆和錯誤處理。
我希望這涵蓋了最需要的基本內容
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.