[英]xcode - Re call xml from server with “activityIndicator”
我正在使用xCode 4.3.2。 在這個項目中,當我單擊按鈕調用“ reloadXMLdata”時,它在加載時沒有顯示activityIndicator,在加載時它看起來像是“已掛起”,幾秒鍾后便填充了數據。 如何在加載時顯示activityIndicator? 您能幫我解決這個問題嗎?
-(void)loadXML
{
NSString *urlAddress = [NSString stringWithFormat:@"my_xml_url"];
NSURL *url = [NSURL URLWithString:urlAddress];
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[xmlParser setDelegate:self];
BOOL success = [xmlParser parse];
if(success)
{
[self.activityIndicator setHidden:TRUE];
[self.activityIndicator stopAnimating];
[dataTable reloadData];
}
else
NSLog(@"Error!!!");
}
-(IBAction)reloadXMLdata:(id) sender
{
[self.activityIndicator setHidden:FALSE];
[self.activityIndicator startAnimating];
[self loadXML];
}
問題是您在調用loadXML
時阻塞了UI,並且活動指示器沒有機會顯示。 因此,嘗試像這樣使用GCD :
-(IBAction)reloadXMLdata:(id) sender
{
[self.activityIndicator setHidden:FALSE];
[self.activityIndicator startAnimating];
[self loadXML];
}
-(void)loadXML
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSString *urlAddress = [NSString stringWithFormat:@"my_xml_url"];
NSURL *url = [NSURL URLWithString:urlAddress];
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[xmlParser setDelegate:self];
BOOL success = [xmlParser parse];
if(success) {
dispatch_async(dispatch_get_main_queue(), ^{
[self.activityIndicator setHidden:TRUE];
[self.activityIndicator stopAnimating];
[dataTable reloadData];
});
} else {
NSLog(@"Error!!!");
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.