如何在NSUrlConnection中使用UIActivity Indicator

时间:2010-08-09 12:17:27

标签: iphone objective-c

我正在使用NSUrlConnection从服务器访问数据。 我希望在从服务器获取数据期间停止用户交互以及代码执行。

我在Stack Overflow或Google上阅读的内容越来越多,但我找不到合适的解决方案。

请参阅我正在使用的代码。

当用户第一次点击从服务器访问数据时,我启动活动指示器。

[activity startAnimating];


NSString *post = 
[[NSString alloc] initWithFormat:@"Email=%@&Pass=%@",Email,pass];

NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];  

NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];  

NSURL *url = [NSURL URLWithString:@"http://server.in/LoginStatus.php"];
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];
[theRequest setHTTPMethod:@"POST"];  
[theRequest setValue:postLength forHTTPHeaderField:@"Content-Length"];  
[theRequest setHTTPBody:postData];  


NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

if( theConnection )
{

    webData = [[NSMutableData data] retain];
}
else
{


}

并在connectionDidFinishLoading函数中停止活动指示器。

问题是,当我检查返回的数据时,它会显示以前的结果。再次单击时,它会显示正确的结果。

如果您有任何想法,请建议。

2 个答案:

答案 0 :(得分:0)

尝试在不同的线程中运行UIActivityIndi​​cator和NSURLConnection。我遇到的问题是当Connection处于活动状态时指示器没有出现。将两者放在单独的线程中解决了它。

答案 1 :(得分:0)

只需使用 [活动开始动画]; 在你的方法

现在尝试在某个线程中创建NSURL连接。并从您的方法调用线程 一旦连接得到完成使用 [活动停止动画];

一定会有效吗