如何将MBProgressHUD添加到队列中

时间:2015-05-04 10:00:01

标签: ios mbprogresshud

没有网络的迹象我想将MBProgressHUD添加到队列中,如果队列中有MBProgressHUD显示,请不要将MBProgressHUD添加到此队列,如果队列中没有MBProgressHUD显示添加到队列中。

中文版:我想添加MBProgressHUD到一个队列中,如果这个队列中有MBProgressHUD显示,就不要添加MBProgressHUD到这个队列中,如果这个队列中没有MBProgressHUD显示则添加到这个队列中

这是我的代码,但我仍然可以看到显示批次MBProgressHUD,它们叠加在一起,不会消失

+ (void)showErrorHUD:(id)target withText:(NSString *)text{
    MBProgressHUD *errorHud = nil;
    if ([target isKindOfClass:[UIViewController class]]) {
       errorHud = [MBProgressHUD showHUDAddedTo:[target view] animated:YES];
    }
    else if([target isKindOfClass:[UIWindow class]]){    
       errorHud = [MBProgressHUD showHUDAddedTo:target animated:YES];
    }
    errorHud.userInteractionEnabled = NO;// errorHud的下层视图可以响应
    errorHud.mode = MBProgressHUDModeCustomView;
    UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon_red_x"]];
    errorHud.labelText = text;
    errorHud.labelColor = REDCOLOR;
    errorHud.customView = imageView;
    dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
        sleep(1);
        dispatch_async(dispatch_get_main_queue(), ^{
            [MBProgressHUD hideHUDForView:[target isKindOfClass:[UIWindow class]] ? target : [target view] animated:YES];
        });
    });   
}

在没有网络的手机中,APP会在调用多个网络接口时启动,然后执行以下方法以显示没有网络的迹象

[self showErrorHUD:[UIApplication sharedApplication].keyWindow withText:@"no network"];

0 个答案:

没有答案