簡體   English   中英

xcode-使用“ activityIndi​​cator”從服務器調用xml

[英]xcode - Re call xml from server with “activityIndicator”

我正在使用xCode 4.3.2。 在這個項目中,當我單擊按鈕調用“ reloadXMLdata”時,它在加載時沒有顯示activityIndi​​cator,在加載時它看起來像是“已掛起”,幾秒鍾后便填充了數據。 如何在加載時顯示activityIndi​​cator? 您能幫我解決這個問題嗎?

-(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM