MBProgressHUD无法更改文本,如果在窗口中显示

时间:2014-01-23 06:56:00

标签: ios uikit uiapplication mbprogresshud

我正在使用MBProgressHUD,我需要在窗口上显示它,因为我想添加许多全屏视图。我用文本设置HUD,当我稍后更改文本时,它不会更改文本。 HUD是单身类的保留属性。当我在视图中显示它时,它允许我这样做。但我需要用窗户来做。

 _HUD = [[MBProgressHUD alloc] initWithWindow:[UIApplication sharedApplication].keyWindow];
    [[UIApplication sharedApplication].keyWindow addSubview:_HUD];
    _HUD.delegate=self;
 _HUD.labelText =HUD_TEXT_LOADING;
 _HUD.detailsLabelText =HUD_TEXT_PLEASE_WAIT;
    [_HUD show:YES];

这就是我改变文字的方式

 -(void) changeHUDText:(NSString*)text andDetailText:(NSString*) detailText
{
if (_HUD) {
    if (text)
        _HUD.labelText=text;

    if (detailText)
        _HUD.detailsLabelText=detailText;
}
}

1 个答案:

答案 0 :(得分:2)

您应该将此方法添加到MBProgressHud的头文件中:

+ (MB_INSTANCETYPE)showHUDAddedTo:(UIView *)view withText:(NSString *)text;

并在.m文件中实现它,如下所示:

+ (MB_INSTANCETYPE)showHUDAddedTo:(UIView *)view withText:(NSString *)text
{
    MBProgressHUD *hud = [[self alloc] initWithView:view];
    hud.labelText = text;
    [view addSubview:hud];
    [hud show:YES];
    return MB_AUTORELEASE(hud);
}

并在任何地方调用它:

[MBProgressHUD showHUDAddedTo:self.view withText:@"Loading..."];