Почему мой UIActivityIndicatorView не прекращает анимацию? - PullRequest
3 голосов
/ 30 января 2010

Я пытаюсь управлять индикатором активности от моего делегата приложения, таким образом, любое из моих представлений может поднять индикатор. Итак, я добавляю его как подпредставление к «окну» и запускаю / останавливаю следующим образом:

- (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 раз больше размера по умолчанию. Тем не менее, анимация остановки не останавливается. Единственное, что я могу сделать вывод, это то, что он должен работать в текущем контроллере представления.

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

Ответы [ 5 ]

8 голосов
/ 13 декабря 2010

Вы пытаетесь сделать это из фонового потока? Простой и точный тест - добавить:

NSLog(@"thread: %@", [NSThread currentThread]);
0 голосов
/ 24 марта 2016

Если вы добавляете его в суперпредставление более одного раза, оно не будет работать.

Попробуйте поставить

[superView addSubview:activityIndicator];

в

if( activityIndicator == nil ) {

состояние

0 голосов
/ 13 марта 2013

если ваш журнал равен нулю, то сделайте это:

в ".h" объявить:

__strong UIActivityIndicatorView *activityIndicator

__strong избегать ARC, а затем вы можете удалить и остановить ActivityIndicator.

[activityIndicator stopAnimating];
[activityIndicator removeFromSuperview];
0 голосов
/ 31 января 2010

OK. Я провел свой эксперимент и, конечно же, он работал безупречно, когда я добавил индикатор активности в качестве подпредставления представления viewcontroller. Однако, когда я затем использовал этот новый проект Simpleton, чтобы попробовать его в качестве подпредставления для окна, он также работал. Очевидно, это ошибка в моем коде, и она требует дополнительной проверки.

Я вознагражу оба Eimantas ответом, поскольку в моем решении было полезно отладочное представление.

0 голосов
/ 30 января 2010

проверьте, если ваш activityIndicator не nil:

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