2012-08-02 52 views
1

我想使用MBProgressHUD庫來查看我的項目中的加載窗格。通常我會使用此代碼顯示在屏幕上:使用MBProgressHUD Segue在界面生成器中定義

HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view]; 
[self.navigationController.view addSubview:HUD]; 
HUD.delegate = self; 
HUD.labelText = @"Loading"; 
[HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES]; 

你可以看到myTask功能應該被定義,幷包含加載代碼。

但是我怎樣才能用這個showWhileExecuting方法與prepareForSegue事件?我在故事板中推送視圖,因此不涉及任何代碼,只需按Ctrl +拖動即可定位視圖。我的意思是我沒有任何代碼可以包含與selector一起使用的方法。

我試圖定義一個空方法,並將其用於MBProgressHUD showWhileExecuting方法selector但它沒有工作。

我也嘗試下面的方法來在selector使用,它的工作,但它引起的死機:

- (void)nullTask { 
[HUD show:YES]; 
} 

那麼,有什麼建議?在IB中使用push segues時,我應該在哪裏定義MBProgressHUD方法以正確顯示它?

回答

0

首先,看文檔的UIViewController方法

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

這可能是方法要在是工作。(你使用這個任何時候,你應該設置你的賽格瑞的標識符在IB中,所以你知道你來自正確的那個)。無論如何,這應該在原始視圖控制器中定義。從那裏你應該可以打電話[HUD show:YES];。我還沒有嘗試過,所以根據你在哪裏調用阻塞的方法,你可能需要在你調用show和hide的地方玩耍(或者任何方法來關閉HUD)。

祝你好運!

+0

我試過了,結果如下:它顯示目標視圖加載到屏幕上後的指標。我的意思是,您等待幾秒鐘,然後加載視圖,當您回到導航中時,您會看到加載窗格在屏幕上。 – kubilay 2012-08-02 13:39:21

+0

好吧,你也可以嘗試在原始視圖控制器上實現'prepareForSegue'。我想它會在兩個地方被調用。 (我不知道這個。) – livingtech 2012-08-02 13:49:39

+0

其實我回來了。它看起來只是在原始視圖控制器上調用,而不是在被推送的目標上調用。抱歉! – livingtech 2012-08-02 13:55:09