MBProgressHUD在iOS中的某个时候没有显示



我正在使用自定义控件MBProgressHUD从网络加载 JSON 数据时显示。

我已经找到了很多答案,这些答案在他们的视图中没有正确显示HUD控制。

这是我在视图中显示HUD的代码。

[MBProgressHUD showHUDAddedTo:self.view animated:YES];

这是我隐藏HUD视图的方式。

[MBProgressHUD hideHUDForView:self.view animated:YES];

在 ViewDidLoad 中,该控件工作正常。

但是当我单击刷新按钮并想要显示HUD控件时,它不会显示HUD控件。

[MBProgressHUD showHUDAddedTo:self.view animated:YES];
dispatch_queue_t myqueue = dispatch_queue_create("queue", NULL);
dispatch_async(myqueue, ^{
    [self performSelectorOnMainThread:@selector(fetchedData:) withObject:nil waitUntilDone:YES];
    dispatch_async(dispatch_get_main_queue(), ^{
        [self.tbl reloadData];
        [MBProgressHUD hideHUDForView:self.view animated:YES];
    });
});

我不知道我做错了什么?请帮助我。

将代码切换到以下内容:

[MBProgressHUD showHUDAddedTo:self.view animated:YES];
dispatch_queue_t myqueue = dispatch_queue_create("queue", NULL);
dispatch_async(myqueue, ^{
    //Whatever is happening in the fetchedData method will now happen in the background
    [self fetchedData:nil];
    dispatch_async(dispatch_get_main_queue(), ^{
        [self.tbl reloadData];
        [MBProgressHUD hideHUDForView:self.view animated:YES];
    });
});

您不想在主线程上调用 fetchData 方法。如果使用上面的代码,则主线程上不会发生 fetchedData 方法中的任何内容,因此请确保不要更新 UI 或其中的任何内容。

只是一个建议,我不会为您的dispatch_queue使用"queue"这个名字.整个应用程序中的队列名称必须是唯一的,因此我将其称为"your.bundle.id.viewcontrollername",以避免以后出现问题。

最新更新