由于异步调用,查看显示在加载图标的顶部

时间:2013-08-20 19:31:03

标签: ios objective-c asynchronous mbprogresshud

我在一个线程中做了所有事情,刚刚开始转向异步调用,所以我有点困惑。

我想要的是加载视图,无论是使用空表还是根本没有表。 MBProgressHUD应该在异步调用获取数据时显示。然后,当找到数据时,HUD消失,表格刷新。

我现在拥有的一切都是有效的,除了HUD显示在空表下面。这是最相关的代码。

- (void)awakeFromNib
{
    [super awakeFromNib];
    [MBProgressHUD showHUDAddedTo:self.tableView animated:YES];
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        self.dataController = [[StudyController alloc] initWithCredentials:email password:password];
        dispatch_sync(dispatch_get_main_queue(), ^{
            [MBProgressHUD hideHUDForView:self.tableView animated:YES];
            [self.tableView reloadData];
        });
    });
}

基本上我正在发生的事情是,我的所有代码都是在异步调用运行时正确运行一次表,并在HUD顶部显示一个空表,然后在我告诉之后再次调用它重新加载数据。如何让它第一次不运行?

感谢。

1 个答案:

答案 0 :(得分:0)

如果没有看到你的表视图委托/数据源方法,很难衡量,但你的直觉是有道理的。在这种情况下,我可以看到两个选项:

  1. 在委托/数据源方法中添加一些逻辑,以便在表格为空时正确显示加载视图。
  2. 不是将加载视图添加到表视图,而是将加载视图添加到表视图的超级视图中。这样,您可以确保加载视图始终位于表视图的顶部。
  3. 我通常选择第二种方法,因为我更喜欢只关注表视图中的数据源和委托方法。

    希望这有帮助!