首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导航耗时

导航耗时
EN

Stack Overflow用户
提问于 2013-11-14 20:49:46
回答 3查看 33关注 0票数 0

我正在通过点击一个按钮导航到一个视图控制器,在那里我正在加载webview,但在单击按钮后,它需要一些时间,如何更快地导航和加载webview,请帮助。

代码语言:javascript
复制
-(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] ;

        });
    });           
}
EN

回答 3

Stack Overflow用户

发布于 2013-11-14 20:55:22

试试这段代码

代码语言:javascript
复制
-(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] ;

        });
    });
}
票数 0
EN

Stack Overflow用户

发布于 2013-11-14 20:57:09

如果我理解你的问题,你可以做的不多,如果更快的话。请求速度是基于网速的(你对网速没有太大的控制能力)。

而且请求已经异步发生了,所以不需要自己去做。

票数 0
EN

Stack Overflow用户

发布于 2013-11-14 21:26:37

当您导航到您的webview时,您组合了两件事

  1. 从internet

加载和显示internet数据

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

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

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

添加一个UIActivityIndicator也可以帮助你的用户意识到你的应用是快速响应的,而他们所经历的延迟是来自互联网。

也许解决这个问题的最简单方法是将您的代码移到

代码语言:javascript
复制
- (void)viewDidLoad {}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19978089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档