0

我有一个UIActivityIndicator在我所有视图的顶部开始动画。在他开始动画之后,这个当前视图的父视图被弹出。现在,在他制作动画之后,我正在调用另一个带有块的类并运行一些服务器命令。

我的问题是,在另一个班级我从服务器得到响应,但我不能告诉 UIActivityIndicator停止,因为他在另一个班级。(我不得不说我不想在 Application Delegate 上实现任何东西)。

在服务器类上,我得到响应后,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];
}
4

1 回答 1

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];

于 2012-10-25T09:12:14.270 回答