2011-06-12 76 views
1

我有一個刷新按鈕,在我的導航欄視圖點擊

buttonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(buttonItemClicked)]; 
    self.navigationItem.rightBarButtonItem = buttonItem; 
-(void)buttonItemClicked{ 
    NSLog(@"buttonItemclicked"); 
    myView.labelName.text = nil; 
    myView.otherLabelName.text = nil; 
    [spinner startAnimating] 
    [spinnerView setHidden:NO]; 
    [self requestAPI]; 
    [spinner stopAnimating]; 
    [spinnerView setHidden:YES]; 
    } 

如果我去進出來看,它工作正常。但是,當我在buttonItemClicked中調用相同的方法時,它不起作用。我也嘗試在我的操作方法中調用視圖方法,但這也不起作用。

我試圖做的是將我的標籤設置爲零,添加我的UIActivityIndicatorView並在標籤重新設置後將其刪除。

我已經嘗試[self.view setNeedsDisplay];

刷新它自我工作,但動畫不起作用。

有什麼建議嗎?

回答

0

動畫不起作用,因爲您使用相同的方法調用startAnimating和stopAnimating(和setHidden)。 渲染在方法調用結束時開始。 您需要設置

[spinner stopAnimating]; 
[spinnerView setHidden:YES]; 

requestAPI

編輯:

使用大中央調度。像:

- (void)buttonItemClicked { 
    myView.labelName.text = nil; 
    myView.otherLabelName.text = nil; 
    [spinner startAnimating] 
    [spinnerView setHidden:NO]; 
    [self requestAPI]; 
} 

- (void)requestAPI { 
    dispatch_async(dispatch_get_global_queue(0, 0), ^{ 
    NSURL *url = [NSURL URLWithString:@"http://example.com"]; 
    NSData *data = [NSData dataWithContentsOfURL:url]; 
    NSString *stringResult = [[NSString alloc] initWithData:data 
                encoding:NSUTF8StringEncoding]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [spinner stopAnimating]; 
     [spinnerView setHidden:YES]; 

     myView.labelName.text = stringResult; 
    }); 

    }); 
} 
+0

@Sinetris如果將我的標籤設置爲零並開始動畫,在我的動作方法中它可以正常工作,即動畫。如果我調用requestAPI,則動畫完成。不知道可能是什麼原因造成的。 – Magnus 2011-06-12 15:15:46

+0

@MagnusAPI有什麼要求嗎?如果您從Web獲取數據(或者您的方法運行幾秒鐘),則需要另一個線程(請參閱Grand Central Dispatch中的「簡化」線程和ASIHTTPRequest以進行異步Web調用)。 – Sinetris 2011-06-12 15:31:36

+0

我從Web服務獲取數據並將獲得的響應放入UILabels中。但我不明白爲什麼它在我的視圖方法中工作,而不是在我的UIBarButtonItem的操作方法中。 – Magnus 2011-06-12 15:39:21

0

嘗試[myView setsNeedToDisplay];

+0

試過了,沒有工作。 – Magnus 2011-06-12 14:39:03