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

时间:2015-03-27 04:25:39

标签: ios objective-c uitableview uiviewcontroller

我正在编写一个ios应用程序,它有多个UIView控制器。它们都有UITableViews,这些UITableViews充满了从不同的API获取的数据。但我面临的问题是,当我点击一个单元格时,该应用程序不会导航到下一页,直到获取该页面的数据。这使应用程序看起来,强大的慢。我需要一些方法来导航到下一页,我可以在其中放置一些微调动画,让用户知道它正在获取数据(至少)。我不希望用户认为应用程序已崩溃,或某些东西(它在固定的7-10秒内保持在同一页面中) 提前致谢

3 个答案:

答案 0 :(得分:0)

我对此问题的解决方法是,您可以使用调度队列调用API,这样就不会影响其他功能。

答案 1 :(得分:0)

你应该在后台调用所有api,这样它就不会影响主线程,在后台队列中使用队列来调用api。

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
    dispatch_async(queue, ^{
//call apis here
});

答案 2 :(得分:0)

请按照以下简单步骤进行操作

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.
}

}