MBProgressHUD隐藏在另一个类中

时间:2011-08-26 11:47:35

标签: objective-c mbprogresshud

我有一个处理Web服务请求的类。当这开始从服务中获取信息时,我创建并在另一个类视图上添加HUD。像这样,

HUD = [[MBProgressHUD showHUDAddedTo:viewController.view animated:YES] retain];

加载完成后我打电话给,

[HUD hideHUDForView:viewController.view animated:YES];

我将委托设置为self,

HUD.delegate = self;

但是我无法从视图中删除它。

- (void)hudWasHidden {
// Remove HUD from screen when the HUD was hidded
[HUD removeFromSuperview];
[HUD release];
HUD = nil;
}

我想从一个类开始在另一个类中显示,而第一个类是从webservice获取数据。然后将我从第一堂课中隐藏起来。

有什么想法吗?

编辑:

现在我可以将第一个类中的委托设置为:

HUD.delegate = viewController;

但是我应该放在哪里:

- (void)hudWasHidden {
// Remove HUD from screen when the HUD was hidded
[HUD removeFromSuperview];
[HUD release];
HUD = nil;
}

2 个答案:

答案 0 :(得分:1)

您可以通过将HUD的委托设置为其他类来完成此操作。

例如,如果我在A类中添加HUD并想要从B类中删除它,那么我必须将HUD的委托设置为B类。

答案 1 :(得分:0)

您可以在第一次通话时使用完成功能块,并在从网络服务获得答案后继续工作,以隐藏块中的HUD。

长篇大论:

[self callServiceWithBlock:^(NSError *error){

//Your service has answered, you can now hide the HUD

    [hud HIDE:YES];
    if (error){
        NSLog(@"Error : %@");
    }


}];