2012-04-21 4 views
0

xCode 4.3.2を使用しています。このプロジェクトでは、ボタンをクリックして 'reloadXMLdata'を呼び出すと、activityIndi​​catorが表示されず、読み込まれるまでに数秒後にデータが埋め込まれたように見えます。読み込み時にactivityIndi​​catorを表示するにはどうすればよいですか? これを修正してもらえますか?xcode - "activityIndi​​cator"を持つサーバーからxmlを再呼び出し

-(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]; 
} 

答えて

0

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!!!"); 
     } 
    }); 
} 
+0

は、小さなupdationありがとう:**)を追加する必要があり、両方の発送を閉じた後**を。 – shebi

関連する問題