使用一个与两个类别的活动联系



我有一个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];

最新更新