2012-07-20 104 views
1

我在我的iPhone應用程序中使用MBProgressHUD。一切工作正常,我顯示警報,如我所願。但是有一個問題:我不能使用hudWasHidden代表作爲我的警報之一。我想這樣做是因爲我使用自定義的segue從另一個視圖加載視圖,但我只想在警報隱藏之後加載視圖。我以這種方式調用警報:[alertSentHUD hide:YES afterDelay:2.0];,並且我已將課程設置爲MBProgressHUDDelegate(位於頭文件中)。我還在我的viewDidLoad中放入了[alertSentHUD setDelegate:self];,以便發現有問題的hudWasHidden,在那裏我像往常一樣啓動我的segue:[self performSegueWithIdentifier:@"NewAlertToAllThreads" sender:self];MBProgressHUD委託hudWasHidden不叫

但似乎這是從未被稱爲(我不明白我想要的)。

任何想法?謝謝。

回答

2

每當沒有消息/沒有按預期的操作時。這意味着什麼是零。 檢查在調用[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

1

即使您將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