MBProgressHUD委托hudWasHidden不叫

问题描述:

我在我的iPhone应用程序中使用MBProgressHUD。一切工作正常,我显示警报,如我所愿。但是有一个问题:我不能使用hudWasHidden代表作为我的警报之一。我想这样做是因为我使用自定义的segue从另一个视图加载视图,但我只想在警报隐藏之后加载视图。我以这种方式调用警报:[alertSentHUD hide:YES afterDelay:2.0];,并且我已将课程设置为MBProgressHUDDelegate(位于头文件中)。我还在我的viewDidLoad中放入了[alertSentHUD setDelegate:self];,以便发现有问题的hudWasHidden,在那里我像往常一样启动我的segue:[self performSegueWithIdentifier:@"NewAlertToAllThreads" sender:self];MBProgressHUD委托hudWasHidden不叫

但似乎这是从未被称为(我不明白我想要的)。

任何想法?谢谢。

每当没有消息/没有按预期的操作时。这意味着什么是零。 检查在调用[alertSentHUD setDelegate:self]之前是否alertSentHud包含nil或不。

也确保您在将消息隐藏传递到MBProgressHUD之前设置委托。 我的意思是确保在设置委托后调用[alertSentHUD hide:YES afterDelay:2.0]。

+1

就是这样!实际上,我的MBProgressHUD是我的类的一部分(在@interface中声明)。我试图在viewDidLoad中设置委托,但是MBProgressHUD只是稍后在其他函数中初始化。我在HUD初始化后移动了setDelegate:self,并解决了问题。最后一个问题:我只尝试了答案的第二部分(移动setDelegate),如何检查“alertSentHud是否包含零或不”?谢谢 ! – rdurand 2012-07-25 08:10:59

+0

最简单的方法是使用NSlog语句进行打印。但是在代码中使用if语句/断言检查边界条件总是明智的 – 2012-07-25 15:33:32

即使您将NSLog()放入hudWasHidden:,它也不会显示?尽管如此,更多的源代码会很好地理解你的问题。您也可以尝试使用块方法:

[self doSomethingInBackgroundWithProgressCallback:^(float progress) { 
    hud.progress = progress; 
} completionCallback:^{ 
    [MBProgressHUD hideHUDForView:self.view animated:YES]; 
    [self performSegueWithIdentifier:@"NewAlertToAllThreads" sender:self]; 
}]; 
+0

非常感谢您的回答,但Kunal Balani解决了我的问题。 – rdurand 2012-07-25 08:13:00