from:
今天這個問題是,在乙個iphone程式中,我要在後台做大量的資料處理,希望在介面上顯示乙個進度條(progress bar)使得使用者了解處理進度。這個進度條應該是在乙個模態的視窗中,使介面上其他控制項無法被操作。怎麼用最簡單的方法來實現這個功能?uialertview是乙個現成的模態視窗,如果能把進度條嵌入到它裡面就好了。
以下內容適用於ios 2.0+。
我們知道,如果要顯示乙個alert視窗(比如用來顯示錯誤或警告資訊、詢問使用者是否確認某操作等等),只要簡單地建立乙個uialertview物件,再呼叫其show方法即可。示意**如下:
1如果要新增乙個進度條,只要先建立並設定好乙個uiprogressview的例項,再利用addsubbiew方法新增到alertview中即可。2
3
4
5
6
7
uialertview
* alertview
=[[[uialertview alloc
] initwithtitle
:@"title"
message
:@"message"
delegate
:nilcancelbuttontitle
:@"ok"
otherbuttontitles
:nil]
autorelease
];[alertview show
];
在實際應用中,我可能需要在類中儲存進度條的物件例項,以便更新其狀態,因此先在自己的viewcontroller類中新增成員變數:
1接下來寫乙個叫做showprogressalert的方法來建立並顯示帶有進度條的alert視窗,其中高亮的部分就是把進度條新增到alertview中:2
3
4
5
6
7
8
9
// mysampleviewcontroller.h
#import
@inte***ce mysampleviewcontroller
: uiviewcontroller
@end
1為了讓資料處理的子程序能夠方便地修改進度條的值,再新增乙個簡單的方法:2
3
4
5
6
7
8
9
10
11
12
13
14 -(
void
)showprogressalert
:(nsstring
*)title withmessage
:(nsstring
*)message
1另外,資料處理完畢後,我們還需要讓進度條以及alertview消失,由於之前並沒有儲存alertview的例項,可以通過進度條的superview訪問之:2
3 -(
void
)updateprogress
:(nsnumber
*)progress
1假設處理資料的方法叫processdata,當然它會在乙個單獨的執行緒中執行,下面的片段示意了如何更新進度條狀態,以及最後如何讓它消失。2
3
4
5
6
7
8
9
10
11
12
13 -(
void
)dismissprogressalert
if([progressview_.superview iskindofclass
:[uialertview class
]])[progressview_ release
];progressview_
=nil;
}
1在實際使用中,帶進度條的alert view大概長得是這樣的:2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 -(
void
)processdata
:(int
)total
// finished.
[self performselectoronmainthread
:@selector
(dismissprogressalert
)withobject
:nilwaituntildone
:yes];
// other finalizations.
}
原文:
轉 如何在UIAlertView中顯示進度條
今天這個問題是,在乙個iphone程式中,我要在後台做大量的資料處理,希望在介面上顯示乙個進度條 progress bar 使得使用者了解處理進度。這個進度條應該是在乙個模態的視窗中,使界 今天這個問題是,在乙個iphone程式中,我要在後台做大量的資料處理,希望在介面上顯示乙個進度條 progre...
如何在UIAlertView中顯示進度條
今天這個問題是,在乙個iphone程式中,我要在後台做大量的資料處理,希望在介面上顯示乙個進度條 progress bar 使得使用者了解處理進度。這個進度條應該是在乙個模態的視窗中,使界 今天這個問題是,在乙個iphone程式中,我要在後台做大量的資料處理,希望在介面上顯示乙個進度條 progre...
如何在程式中延時
方法一 使用sleep函式,如延時2秒,用sleep 2000 方法二 使用sleep函式的不利在於延時期間不能處理其他的訊息,如果時間太長,就好象宕機一樣,利用coledatetime類和coledatetimespan類實現延時就不會出現那樣的問題 coledatetime start time...