当ASIHTTPRequest加载数据时如何使用UIActivityIndi​​catorView?

时间:2012-04-10 15:46:21

标签: ios uiactivityindicatorview

我正在使用ASIHTTPRequest加载JSON数据。当用户触摸按钮时,我正在请求大量数据(这里我正在加载另一个将请求JSON数据的视图)。大约需要15秒。载入。一旦用户触摸按钮,我怎样才能使用UIActivityIndi​​catiorView,直到数据加载为止。

之前是否有人这样做或有任何改善用户表现的建议?

2 个答案:

答案 0 :(得分:1)

    -(void) startRequest:(NSString*)username password:(NSString*)password
{
   ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:mainUrl];    
    [request setDelegate:self]; 
    [request setDidFailSelector:@selector(requestFailed:)];
    [request startAsynchronous];
    [self.addSubview:self.indicator];
    [indicator startAnimating];

}

    -(void) requestFinished: (ASIHTTPRequest *) request {

    [self.indicator stopAnimating];
    [self.indicator removeFromSuperview];

}

答案 1 :(得分:0)

以下是使用ASIHTTPRequest和UIActivityIndi​​cator

的示例
-(void) loadImageFromURL:(NSURL *) url withActivityIndicator:(BOOL) yesOrNo {        
__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

UIActivityIndicatorView *activityIndicator = nil;

if (yesOrNo == YES) {
    activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleGray];
    [activityIndicator setCenter: self.center];
    [activityIndicator startAnimating];
    [self addSubview: activityIndicator];
}

[request setCompletionBlock: ^{
    self.image = [UIImage imageWithData: [request responseData]];
    [activityIndicator removeFromSuperview];
    [activityIndicator release];
}];

[request setFailedBlock: ^{
    [activityIndicator removeFromSuperview];
    [activityIndicator release];
}];

[request startAsynchronous];
}

@end