индикатор загрузки iphone не отображается - PullRequest
0 голосов
/ 03 февраля 2012

Я загружаю определенные данные, и при загрузке этот метод называется:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection;

В этом методе я должен представить вращающееся изображение в контроллере представления, которое я делаю с делегированием и когда данные загружаютсяЯ удаляю это вращающееся изображение:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

[delegate showIndicator];

//Complex data downloading

[delegate hideIndicator];
}

Так что эти методы вызываются, когда происходит connectionFinishedLoading, но они не вызываются.Вот их реализации:

-(void)showIndicator;
{
    NSLog(@"Show indicator");
    UIImage *statusImage = [UIImage imageNamed:@"update.png"];
    activityImageView = [[UIImageView alloc] initWithImage:statusImage];
    // Make a little bit of the superView show through

    activityImageView.animationImages = [NSArray arrayWithObjects:
                                         [UIImage imageNamed:@"update.png"],
                                         [UIImage imageNamed:@"update2.png"],
                                         [UIImage imageNamed:@"update3.png"],
                                         [UIImage imageNamed:@"update4.png"],
                                         nil];
    activityImageView.frame=CGRectMake(13, 292, 43, 44);
    activityImageView.animationDuration = 1.0f;
    [rightView addSubview:activityImageView];
    [activityImageView startAnimating];
}
-(void)hideIndicator
{  NSLog(@"Hide indicator");
     [activityImageView removeFromSuperview];
}

И вот где я создаю объект JManager, для которого вызывается событие connectionFinished:

-(IBAction)update:(id)sender
{
///la la la updating
JManager *manager1=[[JManager alloc] initWithDate:dateString andCategory:@"projects"];
            manager1.delegate=self;
            [manager1 requestProjects];
}

Почему нельзя добавить добавление моего пользовательского индикатораот имени объекта Jmanager?спасибо!

1 Ответ

1 голос
/ 03 февраля 2012

Предполагая, что вы вызываете NSURLConnection из основного потока, метод не выполняется асинхронно, поэтому индикатор не может отображаться между тем, как вы запускаете и останавливаете его.

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

    [delegate showIndicator];

    //Complex data downloading

    [delegate hideIndicator];
}

Вы должны вызвать[delegate showIndicator] в вашем - (void)connectionDidReceiveResponse методе, например:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    //connection starts
    [delegate showIndicator];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

    //connection ends
    [delegate hideIndicator];
}    
...