在之前的应用中,我使用4个步骤将数据加载到UIWebView中: 1.使用NSURL连接以异步方式从Web获取数据 2.下载完成后,将NSData对象转换为字符串,并在显示之前处理数据。 3.将转换后的数据写入doc文件夹 4.将数据从文件
加载到UIWebView中但是在我当前的应用程序中,我没有必要操纵从Web加载的数据。我只是想异步下载,并在该视图尚不可见时将其加载到UIWebView中。然后在我需要时显示该视图。
使用作为块传递给GCD的loadRequest消息会更好吗?那可行吗?我试图避免写入本地文件的整个混乱,然后从该文件重新加载页面。建议?
答案 0 :(得分:6)
为什么不直接将NSURLRequest
提供给webview
?
如果您不需要按摩传输中的数据,它完全能够从网络上加载数据。
答案 1 :(得分:4)
试试这个
NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webview loadRequest:request];
一切顺利。
答案 2 :(得分:1)
<强>的UIWebView 强>
您可以加载@Warrior提到的请求 它的主要优点是异步加载,您不必像@Kevin Ballard那样管理所有内容。
NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webview loadRequest:request];
<强> UIWebViewDelegate 强>
但是如果您想要在网址完全加载时收到通知。您必须符合 UIWebViewDelegate
标题
@interface YourController : UIViewController <UIWebViewDelegate>
实施
1.你必须将代表设置为自己
self.yourWebView.delegate = self;
2.您必须实施以下委托,以便在请求加载完成时通知您。
- (void)webViewDidFinishLoad:(UIWebView *)webView {
// Do whatever you want here
}
3.你必须将webview委托设置为nil并停止加载请求,并防止你自己因为悬挂指针而导致错误EXC_BAD_ACCESS Bug。你可以找到更多关于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对象。如果这样做,可能会导致意外行为,因为两个对象的触摸事件可能会混淆和错误处理。
我希望这涵盖了最需要的基本内容