问题描述
|
我在通过NSURLConnection请求的帮助从服务器收集数据时显示UIActivityIndicatorView时出现问题。
我认为该请求是异步的,即是在新线程中启动的。我已经从Apple的AdvancedTableViewCells示例中复制了内容。我在iOS 4.3 iPhone模拟器的XCode中运行它。我还没有在真正的iPhone上测试过它。
我也用谷歌搜索了这个问题,并尝试了很多建议,但感觉是我忘记了一些基本知识。下面是我来自RootViewController类的代码。
我相信,我只是选择一行,创建并添加activityview,开始动画,然后创建NSUrlConnection对象,该对象开始从另一个线程中的服务器获取数据。
有任何想法吗?
@interface RootViewController : UITableViewController {
NSMutableData *receivedData;
UIActivityIndicatorView *activityView;
}
@end
...
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// In my rootviewcontroller
activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[self.view addSubview:activityView];
[activityView startAnimating];
…
NSMutableuRLRequest *tUrlRequest = [tQuery createUrlRequest:tStatId];
NSURLConnection *tConnectionResponse = [[NSURLConnection alloc] initWithRequest: tUrlRequest delegate: self];
if (!tConnectionResponse) {
NSLog(@\"Failed to submit request\");
} else {
NSLog(@\"Request submitted\");
receivedData = [[NSMutableData data] retain];
}
return;
}
...
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSLog(@\"Succeeded! Received %d bytes of data\",[receivedData length]);
NSXMLParser *tParser = [[NSXMLParser alloc] initWithData: receivedData];
...
[tParser parse];
...
[connection release];
[receivedData release];
[NSThread sleepForTimeInterval: 2.0]; // Just to see if activity view will show up...
NSUInteger row = 1;
if (row != NSNotFound)
{
// Create the view controller and initialize it with the
// next level of data.
VivadataTViewController *vivaViewController = [[VivadataTViewController alloc] init];
if (activityView != nil) {
[activityView stopAnimating];
}
}
}
解决方法
遇到同样的问题,尝试将“属性检查器”->“样式”下的UIActivityIndicatorView的颜色更改为“灰色”