我有一个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];
}
答案 0 :(得分: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];