2011-05-07 163 views
0

我使用UIProgresView顯示下載和標籤內容下載的百分比。該函數每次都在執行。當我顯示進度值時,它將在控制檯中正確顯示。但它不顯示在屏幕上,只顯示0%和100%。我也使用ASIHTTP框架。UIProgressView不能準確顯示進度

請幫忙。從評論

CODE:

for (float i=0; i< [topicNew count]; i++) 
{ 
    NSDictionary *new= [topicNew objectAtIndex:i]; 
    NSString *imageName = [[[NSString alloc] initWithFormat:@"%@.%@.%@.png", appDelegate.subject,topicNamed,[new objectForKey:kWordTitleKey]] autorelease]; 
    NSString *imagePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent:imageName]; 
    NSData *imageData = [self ParsingImagePath:[new objectForKey:kWordImagePathKey]]; 
    [progressView setProgress:i/[topicNew count]]; 
    [lblpercent setText:[[NSString stringWithFormat:@"%.0f",i/[topicNew count]] stringByAppendingString:@"%"]]; 

...這裏更多的代碼...

+0

給我們一些代碼,我有你在範圍0到工作,而不是100 0的感覺 - 1,也許鑄造是一個問題了。 – 2011-05-07 08:59:10

+0

不,我在0和1之間使用。 – Arvind 2011-05-07 09:10:33

+0

沒有人知道這個! – Arvind 2011-05-07 12:20:39

回答

0

它看起來像你螺紋鎖你的主線程。也就是說,您正在更新progressView,但mainthread永遠不會從for循環中退出,直到for循環完成,然後看起來您的進度設置爲100%時才顯示更新的更改。

您需要使用像(NSTimer)或某種後臺線程處理您的圖像文件的計時器。然後,你需要的時候你想更新你的進步,從後臺線程調用您的UIProgressView的實例(循環例如結束)

float p = i/[topicNew count]; 
[progressView performSelectorOnMainThread:@selector(setProgress:) 
    withObject:[NSNumber numberWithFloat:p] 
    waitUntilDone:NO]; 

,並通過您的最新進展向progressView。確保你沒有直接從後臺線程調用progressView,因爲UIKit不是線程安全的。只能從主線程調用它,或使用performSelectorOnMainThread:withObject:waitUntilDOne:方法。

希望這可以讓你在正確的直接