MBProgresshud没有显示标签文本

时间:2014-02-13 13:36:33

标签: objective-c label mbprogresshud

我不想显示进度指示器(MBprogress hud),这是我实现的代码。

 [NSThread detachNewThreadSelector: @selector(showMe) toTarget:self withObject:NULL];
在show方法中,我已经(试图)显示了MBprogress Hud,但它没有显示标签文字。

 -(void)showMe
{
 if(hudForBal) // hudForBal is my MBprogressHud's object
  {
    [hudForBal removeFromSuperview];
    [hudForBal release];
    hudForBal = nil;
   }

   hudForBal =[[MBProgressHUD alloc]init];
   hudForBal.labelText =@"Please wait...";
    hudForBal.delegate = Nil;
    [self.view addSubview:hudForBal];
   [hudForBal show:YES];
}

它正在工作,但它没有显示标签文字。我做错了什么?  提前谢谢!

1 个答案:

答案 0 :(得分:1)

没有必要创建一个新线程来实现这一点,事实上,在主线程以外的任何线程上更改UI都是未定义的行为。如果您在调用此方法时已经在主线程上,那么您所要做的就是像往常一样执行选择器,而不将其发送到其他线程。

但是,如果您在执行此选择器时已经在后台线程上,并且想要更新UI,则可以使用dispatch_async()作为快速简便的方法返回主要线。

- (void)showMe {
    dispatch_async(dispatch_get_main_queue(), ^{
        if(hudForBal) {
            [hudForBal removeFromSuperview];
            [hudForBal release];
            hudForBal = nil;
        }

        hudForBal =[[MBProgressHUD alloc]init];
        hudForBal.labelText =@"Please wait...";
        hudForBal.delegate = Nil;
        [self.view addSubview:hudForBal];
        [hudForBal show:YES];
    });
}