我正在编写一个ios应用程序,它有多个UIViewcontrollers。它们都有充满数据的UITableViews,这些数据是从不同的API获取的。但我面临的问题是,当我点击一个单元格时,应用程序将不会导航到下一个页面,直到获取该页面的数据为止。这使应用程序看起来非常缓慢。我需要一些方法导航到下一页,在那里我可以放置一些旋转动画,让用户知道它正在获取数据(至少)。我不想让用户认为应用程序崩溃了,或者什么东西(它在同一个页面中停留了7-10秒),谢谢。
发布于 2015-03-27 05:47:52
您应该调用背景中的所有api,这样它就不会影响主线程,在后台队列中使用队列来调用api,如下所示。
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
dispatch_async(queue, ^{
//call apis here
});发布于 2015-03-27 04:31:22
我对这个问题的解决方案是,您可以使用分派队列调用API,这样它就不会影响其他功能。
发布于 2015-03-27 07:54:10
请遵循以下简单步骤
ViewController1 = VC1
ViewController1 = VC2
在VC1中
[self.navigationController pushViewController:VC2 animated:YES];在VC2中
@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.
}}
https://stackoverflow.com/questions/29293297
复制相似问题