0

我通过单击一个按钮导航到我正在加载 webview 的视图控制器,但是在单击按钮后需要一些时间,如何更快地导航和更快地加载 webview,请帮助。我在第二个视图控制器中只有以下代码。

-(void)viewWillAppear:(BOOL)animated{
    self.navigationController.navigationBarHidden=YES;
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);

    dispatch_async(queue, ^{
        NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://myurl"]];

        dispatch_async(dispatch_get_main_queue(), ^{
            [self.wb loadRequest:request] ;

        });
    });           
}
4

3 回答 3

0

当您导航到您的 web 视图时,您正在组合两件事

  1. 加载和显示视图
  2. 从互联网检索数据

你只能直接影响第一个,第二个是你无法控制的。

通过在该viewWillAppear方法中执行异步 NSURLRequest,您是在告诉 iOS 延迟显示视图,直到 Internet 为您提供所需的所有数据。

更好的方法是配置新视图的所有可视元素,在界面中显示该视图,然后在新视图可见后,执行您的 NSURLRequest。

添加 UIActivityIndi​​cator 还可以帮助您的用户意识到您的应用程序快速且响应迅速,并且他们遇到的延迟来自互联网。

也许解决此问题的最简单方法是将您的代码移至

- (void)viewDidLoad {}
于 2013-11-14T13:26:37.350 回答
0

试试这个代码

-(void)viewWillAppear:(BOOL)animated{
    self.navigationController.navigationBarHidden=YES;
dispatch_queue_t jsonParsingQueue = dispatch_queue_create("jsonParsingQueue", NULL);

    // execute a task on that queue asynchronously
    dispatch_async(jsonParsingQueue, ^{
        NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://myurl"]];

        dispatch_async(dispatch_get_main_queue(), ^{
            [self.wb loadRequest:request] ;

        });
    });
}
于 2013-11-14T12:55:22.387 回答
0

如果我理解您的问题,那么如果更快,您将无能为力。该请求速度基于互联网速度(您没有太多控制权)。

此外,请求已经异步发生,因此无需自己进行。

于 2013-11-14T12:57:08.667 回答