0

我有一個UIActivityIndicator,開始在我所有的視圖的頂部動畫。在他開始動畫之後,彈出當前視圖的父視圖。現在,在他製作動畫之後,我用一個塊調用另一個類並運行一些服務器命令。使用一個ActivityIndi​​cator和兩個類

我的問題是,在其他類即時通訊服務器獲得響應,但我不能告訴 UIActivityIndicator停止,因爲他在其他類。 (我不得不說,我不想在應用程序委託上實現任何內容)。

在服務器類上,獲得響應後,出現UIAlertView,但UIAlertView在服務器類中實現。這就是我想要UIActivityIndicator停止的地方。

我希望我明白,如果沒有,請告訴我。

謝謝。

- (void)buttonPressed:(id)sender 
{ 
    UIView * darkView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)]; 
    darkView.backgroundColor = [UIColor blackColor]; 
    darkView.alpha = 0.5f; 

    UIActivityIndicatorView * activityIndicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
    [darkView addSubview:activityIndicator]; 
    activityIndicator.center = darkView.center; 

    [activityIndicator startAnimating]; 
    [[UIApplication sharedApplication].keyWindow addSubview:darkView]; 

    // Inside this class (ShareByEmail) there is a UIAlertView that should stop the 
    // animation that already running right now. 
    ShareByEmail *sbe = [[ShareByEmail alloc]init]; 
    [sbe share]; 

    [self.navigationController popViewControllerAnimated:YES]; 
} 

回答

1

一種選擇是保持UIActivityIndicator作爲單獨的對象,並在項目的任何地方使用它。另一種選擇是使用notifications來嘗試。您需要將觀察者添加到此活動指示器並將其刪除,並且每當請求被觸發/執行時,您都需要發佈通知以開始/停止活動指示器。

更新:

在你的情況下,或者您可以爲活動的指標分配內存後,立即將其設置爲[[NSNotificationCenter defaultCenter] addObserver:activityIndicator selector:@selector(startAnimating) name:@"startActivityIndicator" object:nil][[NSNotificationCenter defaultCenter] addObserver:activityIndicator selector:@selector(stopAnimating) name:@"stopActivityIndicator" object:nil]。現在,只要您想要啓動或停止它,請致電[[NSNotificationCenter defaultCenter] postNotificationName:@"startActivityIndicator" object:nil][[NSNotificationCenter defaultCenter] postNotificationName:@"stopActivityIndicator" object:nil]。確保活動指示器未被釋放。我建議你在這個類中聲明你的活動指示器爲類級變量,並在init方法中分配內存。在你的按鈕按下的方法中,你可以使用[darkView addSubview:activityIndicator];

+0

因此,在activiyIndi​​cator視圖中,我已經添加了這一行:'[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stopAnimating :) name:@「messageActivityIndi​​cator」 object:activityIndi​​cator]',並在服務器類中添加了[[[NSNotificationCenter defaultCenter] postNotificationName:@「messageActivityIndi​​cator」object:nil''。是對的嗎?什麼是正確的做法呢?我從來沒有這樣做過。 –

+0

查看這些通知示例的鏈接,http://mobile.tutsplus.com/tutorials/iphone/ios-sdk_nsnotificationcenter/ .. http://iphonebyradix.blogspot.com/2011/07/nsnotificationcenter-tutorial.html .. http://www.theappcodeblog.com/2011/05/16/nsnotificationcenter-tutorial-using-the-notification-center-in-your-iphone-app/ – iDev

+0

也更新了我的答案。有很多方法可以實現這一點。提到了這樣一種方式。 – iDev

相關問題