Почему UIIndicator не уходит? - PullRequest
       26

Почему UIIndicator не уходит?

0 голосов
/ 25 ноября 2011

Я использую UIActivityIndicator в своем приложении. Я написал код для него следующим образом:

-(void)startSpinner {

    spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    spinner.hidden = NO;
    spinner.frame = CGRectMake(137, 160, 50, 50);
    [spinner setHidesWhenStopped:YES];
    [self.view addSubview:spinner];
    [self.view bringSubviewToFront:spinner];
    [spinner startAnimating];
}

Я вызываю этот метод для события действия UIButton

и для удаления индикатора пишу код следующим образом:

-(void)stopSpinner {

    [spinner stopAnimating];
    [spinner removeFromSuperview];
    [spinner release];
}

при нажатии на кнопку появляется индикатор, но когда я вызываю - (void) метод stopSpinner в поле зрения Появится индикатор, который не разочарует.

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self stopSpinner];

}

даже я отлаживаю код и обнаружил, что управление также переходит к stopSpinner ();

Я не могу понять, в чем проблема.

Пожалуйста, помогите ...

1 Ответ

3 голосов
/ 25 ноября 2011

У вас может быть потенциальная утечка в startSpinner, потому что вы всегда создаете UIActivityIndicatorView, не выпуская ее. Измените свой метод так:

-(void)startSpinner {
    if (spinner){
        [spinner removeFromSuperview];
        [spinner release]; spinner = nil;
    }
    spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    spinner.frame = CGRectMake(137, 160, 50, 50);
    [spinner setHidesWhenStopped:YES];
    [self.view addSubview:spinner];
    [spinner startAnimating];
}

Для остановки анимации назначьте stopSpinner для другого действия UIButton. Cos viewWillAppear будет запущен раньше, чем вы нажмете на любую кнопку.
пс. может быть, вы имеете в виду viewWillDisappear?

...