2010-09-20 87 views
0

我將如何顯示進度條是工作沒有刷新()在Objective-C像有在.net中我會用什麼刷新iPhone對於進度

例如

contactprogress.progress = 0.5; 
StatusLabel.text = @"Status: Address Found"; 

如何刷新視圖以顯示進度已改變&向用戶顯示StatusLabel狀態?

感謝

梅森

回答

0

這聽起來像你想要更新一個進度條和一些文本之間的一段時間間隔重複。你可以使用一個簡單的計時器。閱讀關於定時器here。也許是這樣的:

[NSTimer scheduledTimerWithTimeInterval:0.1f target:self selector:@selector(refreshProgress) userInfo:nil repeats:YES]; 

和:

- (void) refreshProgress:(id)sender { 
    // figure out new progress bar and text values 
    contactprogress.progress = 0.5; 
    StatusLabel.text = @"Status: Address Found"; 

    // check if we should stop the timer and hide the progress bar/status text 
} 

這將每0.1秒新值更新進度條。

+0

對不起,這不會爲我想要的 – user393273 2010-09-20 19:27:51

+0

工作也許你可以更新你的文章,以更清楚你想做什麼,出了什麼問題...... – 2010-09-20 19:34:44

+0

基本上contactprogress jsut從0到1而不顯示階段,任務至少花費1分鐘,所以它的任務不會太快 – user393273 2010-09-20 19:53:14

0

要重繪的UIView,您可以使用

[UIView setNeedsDisplay]; 

但是,您將需要此只有在非常罕見的情況下。當你改變時,讓我們說一個標籤的內容,你的UI應該立即更新。你可能想爲你的問題提供更多的代碼/上下文。

+0

contactprogress.progress = 0.25; \t StatusLabel.text = @「Status:Finding address's」; \t ABAddressBookRef _addressBookRef = ABAddressBookCreate(); NSArray * allPeople =(NSArray *)ABAddressBookCopyArrayOfAllPeople(_addressBookRef); NSMutableArray * _allItems = [[NSMutableArray alloc] initWithCapacity:[allPeople count]]; //容量只是一個粗略的猜測,但好於沒有 – user393273 2010-09-20 19:20:44

+0

,沒有工作,只是終止了應用程序 – user393273 2010-09-20 19:24:20

+0

請將代碼添加到您的inital發佈,閱讀它的評論是不是很舒服。但一般情況下,如果你有StatusLabel.text = @「Status:Finding address's」;沒有任何反應,你的設置有問題。如果您使用了Interface Builder,您是否將標籤連接到「StatusLabel」變量?關於終止:將UIView替換爲對UIView的引用,即[self setNeedsDisplay] – Phlibbo 2010-09-20 19:24:25

1

根據您對其他兩個響應的意見,您正在執行一些計算密集型任務,這需要幾秒鐘,並且視圖在任務期間不會更新。你可以嘗試使用兩個線程(並不像聽起來那麼可怕),這樣UI可以在任務完成時繼續更新。

Here is an example.

iOS Reference Library Threading Programming Guide