实施活动指标的好概念是什么?

时间:2014-03-03 21:45:39

标签: ios iphone ipad uicollectionview uiactivityindicatorview

在我们的iPgone& iPad应用程序我们在不同的ui控制器之间使用推送segue转换,其中大多数扩展UICollectionViewController。在每个控制器中,我们从内部API加载数据。正在加载viewWillAppearviewDidLoad 现在,事情是,这个API调用有时可能需要一两秒,甚至三个......好吧,很多东西,让我们假设我们无法改变它。但是,我们可以改变用户体验并至少添加“加载”圈指示符。问题是,通过正确的概念我无法理解,当从A转换到B时,“加载”在B处完成,而页面A仍然呈现。 因此,问题是“如何在页面A上显示指示器,同时为页面B加载控制器?”

谢谢大家,
URI。

1 个答案:

答案 0 :(得分:2)

这种情况下的常见方法是在主线程中的目标视图控制器中加载数据。您可以在后台线程中加载数据时显示指示符,然后将其删除。

以下是解决同一问题的项目代码示例:

- (void) viewDidLoad {
    ...
    // add indicator
    self.spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    self.spinner.hidesWhenStopped = YES;
    self.spinner.center = self.view.center;
    [self.view addSubview:self.spinner];

    ...    
    // fetch news
    [self.spinner startAnimating];
     __weak typeof(self) weakSelf = self
    [[BitrixApiClient sharedInstance] getLatestNewsWithCompletionBlock:^(NSArray *newsArray, NSUInteger maxPageCount, NSUInteger currentPageNumber, NSError *error) {
        if (!error) {
            weakSelf.newsArray = newsArray;
            weakSelf.currentPageNumber = currentPageNumber;

            [weakSelf.newsTableView reloadData];
        }
        // stop spinning
        [weakSelf.spinner stopAnimating];
    }];
}
相关问题