我有一个基于UITabBar的iPhone应用程序,每个选项卡下有4个不同的UIWebView。现在所有的UIWebViews在启动时都会加载,而且需要的时间太长了。
我想首先加载默认选项卡的UIWebView,然后在后台加载其他选项卡。这样做的最佳方式是什么?
我为每个标签设置了单独的ViewControllers,并在每个.m文件中都有这个:
- (void)viewDidLoad {
NSString *urlAddress2 = @"http://google.com ";
//Create a URL object.
NSURL *url2 = [NSURL URLWithString:urlAddress2];
//URL Requst Object
NSURLRequest *requestObj2 = [NSURLRequest requestWithURL:url2];
//Load the request in the UIWebView.
[webView2 loadRequest:requestObj2];
}
是否有一种简单的方法可以告诉其他3个标签在启动后几秒钟而不是在启动时开始加载?那会是一个好主意吗?
非常感谢!
答案 0 :(得分:1)
如果您使用ASIHTTPRequest
代替NSURLRequest
,则可以为第一个网址触发synchronous request。完成该请求后,您可以异步(即在后台)触发其他三个URL请求。
答案 1 :(得分:1)
我通过实现所有请求都通过的模型层来解决这个问题。请求按优先级顺序排队和服务,通常一次一个。我添加了特定方法,允许控制器升级请求的优先级,以便在必要时一次激活两个或多个请求。请求完成后,它会向代理(WebView的控制器)发出警告,表明数据已准备好加载。
根据您想要设置的方式,您可以在“webViewDidFinishLoad”(或者,可能是,shouldStartLoadWithRequest或webViewDidStartLoad)中进行回调,以触发模型层出列并为下一个请求提供服务。为安全起见,您还需要在模型层中使用超时。
注意:您还需要在shouldStartLoadWithRequest中添加一些自定义代码,以区分点击次数和推送数据的模型层.I.e。你会想要返回NO或YES,具体取决于navigationType。
答案 2 :(得分:0)
您可以使用NSTimer
,或在viewDidAppear
或类似内容中加载。
答案 3 :(得分:0)
使用viewDidAppear。在视图完全显示并且动画结束后,这将被发送到控制器。