我有一个UIActivityIndicator
,它开始在我所有视图的顶部进行动画。在他开始动画时,弹出了此当前视图的父视图。现在,在他进行动画活动之后,我正在调用另一堂课,并运行一些服务器命令。
我的问题是,在其他类中,我从服务器中获取响应,但我无法告诉 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];
}
一个选项是将 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];