2011-10-13 44 views
0

我從我的iPhone應用程序發送一個字符串到Web服務器。我正在使用UIProgressView來顯示請求的進度。以下是我的代碼:爲什麼UIProgressView在我寫myProgressView.hidden = FALSE時先填充它的進度條?

-(IBAction)sendToServer:(id)sender{ 

NSString *url = [RequestUtil getWebURL]; 
NSString *jsonString = [JSONUtil jsonRunData: self.runDetails]; 
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:url]]; 
[request setTimeOutSeconds:60]; 
[request setPostValue:jsonString forKey:@"jsondata"]; 
[request setUploadProgressDelegate:myProgressIndicator]; 
[request setDelegate:self]; 
[request startAsynchronous]; 
progressTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(increaseAmount) userInfo:nil repeats:YES]; 
} 

- (void)requestFailed:(ASIHTTPRequest *)request{ 
    self.myProgressIndicator.hidden = TRUE; 
// alert 
} 

- (void)requestFinished:(ASIHTTPRequest *)request { 
    myProgressIndicator.progress = 1.0; 
    // alert 
} 

-(void) increaseAmount{ 
progressNumber = progressNumber+0.2; 
if(progressNumber <= 0.9){ 
    myProgressIndicator.progress = progressNumber; 
}else { 
    [progressTimer invalidate]; 
    progressNumber = 0.0; 
} 
} 

當我按下發送到服務器按鈕時,sendToServer被調用。並顯示UIProgressView。問題是,當顯示進度視圖時,它會快速填充進度條,然後重新開始並執行定時器。爲什麼進度視圖在代表計時器開始行動之前填充進度欄?

+0

你設定的初始值是什麼? – BojanG

+0

[myProgressIndicator setProgress:0.0]; – Piscean

回答

1

我知道這是一個老問題,你可能已經開始了,但我懷疑問題的根源在於默認情況下進度屬性是動態的。在顯示進度視圖之前調用[myProgressIndicator setProgress:0.0 animated:NO]。

+0

你先生,是我的英雄! – Johanneke