首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >移到下一个UIViewcontroller,而在那里显示的数据仍在加载。

移到下一个UIViewcontroller,而在那里显示的数据仍在加载。
EN

Stack Overflow用户
提问于 2015-03-27 04:25:38
回答 3查看 83关注 0票数 0

我正在编写一个ios应用程序,它有多个UIViewcontrollers。它们都有充满数据的UITableViews,这些数据是从不同的API获取的。但我面临的问题是,当我点击一个单元格时,应用程序将不会导航到下一个页面,直到获取该页面的数据为止。这使应用程序看起来非常缓慢。我需要一些方法导航到下一页,在那里我可以放置一些旋转动画,让用户知道它正在获取数据(至少)。我不想让用户认为应用程序崩溃了,或者什么东西(它在同一个页面中停留了7-10秒),谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-27 05:47:52

您应该调用背景中的所有api,这样它就不会影响主线程,在后台队列中使用队列来调用api,如下所示。

代码语言:javascript
运行
复制
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
    dispatch_async(queue, ^{
//call apis here
});
票数 0
EN

Stack Overflow用户

发布于 2015-03-27 04:31:22

我对这个问题的解决方案是,您可以使用分派队列调用API,这样它就不会影响其他功能。

票数 0
EN

Stack Overflow用户

发布于 2015-03-27 07:54:10

请遵循以下简单步骤

ViewController1 = VC1

ViewController1 = VC2

在VC1中

代码语言:javascript
运行
复制
[self.navigationController pushViewController:VC2 animated:YES];

在VC2中

代码语言:javascript
运行
复制
@implementation {
    BOOL hasData;
}
-(void)viewDidLoad { 
    hasData = NO;
    [self getAndShowData];
}
-(void)getAndShowData {
    // Start Showing Spinner
    // load your data from server and 
    // on success 
    1.) hasData = YES;
    2.) Call reload tableview
    // Remove spinner

}
- (NSInteger)numberOfRowsInSection:(NSInteger)section {
     if(hasData == NO) return 0;
     return actual number of rows.
}

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29293297

复制
相关文章

相似问题

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