-->

查看显示在加载图标上方,由于异步调用(View displaying on top of loadi

2019-09-28 02:04发布

我是做在一个单独的线程一切才刚刚开始移动到异步调用,所以我有点糊涂了。

我想这样的观点来加载,无论是与一个空表或没有表都没有。 该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上的顶空表,然后当我再次告诉它reloadData 。 我如何得到它不运行第一次?

谢谢。

Answer 1:

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

  1. 一些逻辑添加到您的委托/数据源的方法来正确显示您加载视图如果表是空的。
  2. 而不是加载视图添加到表视图中添加加载视图表视图的上海华。 这样一来,就可以确保装载观点总是在表视图的顶部。

我通常选择第二种方法,因为我更喜欢把注意力放在表视图我的数据源和委托方法。

希望这可以帮助!



文章来源: View displaying on top of loading icon due to async call