为什么我的UIActivityIndi​​catorView不会停止动画?

时间:2010-01-30 18:24:35

标签: iphone cocoa-touch uikit uiactivityindicatorview

我正在尝试从我的App Delegate管理活动指示器,这样我的任何视图都可以启动指示器。所以,我将它作为子视图添加到'window'并按如下方式启动/停止:

- (void)didStartActivity
{
    if( activityIndicator == nil ) {
        activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
        activityIndicator.hidesWhenStopped = YES;
        activityIndicator.center = window.center;
        activityIndicator.transform = CGAffineTransformScale(CGAffineTransformIdentity, 6.0, 6.0);
    }
    NSLog(@"%s: starting the activityIndicator", __FUNCTION__);
    [window addSubview:activityIndicator];
    [activityIndicator startAnimating];
}

我看到了日志消息,所以我知道正在调用代码。指标位于中心,默认大小为6倍。但是,stopAnimating并没有停止。我唯一可以得出的结论是它需要在当前的视图控制器中运行。

- (void)didStopActivity
{
    NSLog(@"%s: stopping the activityIndicator", __FUNCTION__);
    [activityIndicator stopAnimating];
    [activityIndicator removeFromSuperview];
}

5 个答案:

答案 0 :(得分:8)

您是否尝试从后台线程执行此操作?一个简单而明确的测试是添加:

NSLog(@"thread: %@", [NSThread currentThread]);

答案 1 :(得分:0)

检查activityIndicator是否不是nil

NSLog(@"activityIndicator: %@", activityIndicator);

答案 2 :(得分:0)

行。我做了我的实验,果然,当我将活动指示器添加为viewcontroller视图的子视图时,它完美无缺。但是,当我使用新的simpleton项目将其作为窗口的子视图时,它也起作用。显然我的代码中存在一个错误,需要更多检查。

我将给予Eimantas两个答案,因为调试概念在我的解决方案中很有用。

答案 3 :(得分:0)

如果您的日志为零,请执行以下操作:

“.h”中的

声明:

__strong UIActivityIndicatorView *activityIndicator

__strong避免ARC,然后你可以删除并停止activityIndi​​cator。

[activityIndicator stopAnimating];
[activityIndicator removeFromSuperview];

答案 4 :(得分:0)

如果您将它多次添加到超级视图中,它将无效。

尝试放

[superView addSubview:activityIndicator];

进入

if( activityIndicator == nil ) {

条件