今天這個問題是,在乙個iphone程式中,我要在後台做大量的資料處理,希望在介面上顯示乙個進度條(progress bar)使得使用者了解處理進度。這個進度條應該是在乙個模態的視窗中,使界
今天這個問題是,在乙個iphone程式中,我要在後台做大量的資料處理,希望在介面上顯示乙個進度條(progress bar)使得使用者了解處理進度。這個進度條應該是在乙個模態的視窗中,使介面上其他控制項無法被操作。怎麼用最簡單的方法來實現這個功能?uialertview是乙個現成的模態視窗,如果能把進度條嵌入到它裡面就好了。
以下內容適用於ios 2.0+。
我們知道,如果要顯示乙個alert視窗(比如用來顯示錯誤或警告資訊、詢問使用者是否確認某操作等等),只要簡單地建立乙個uialertview物件,再呼叫其show方法即可。示意**如下:
12
3
4
5
6
7
uialertview
* alertview = [
[[uialertview alloc
] initwithtitle:@
"title"
message:@
"message"
delegate
:nil
cancelbuttontitle:@
"ok"
otherbuttontitles
:nil
]autorelease
];[alertview show
];如果要新增乙個進度條,只要先建立並設定好乙個uiprogressview的例項,再利用addsubbiew方法新增到alertview中即可。
在實際應用中,我可能需要在類中儲存進度條的物件例項,以便更新其狀態,因此先在自己的viewcontroller類中新增成員變數:
12
3
4
5
6
7
8
9
// mysampleviewcontroller.h
#import
@inte***ce mysampleviewcontroller
: uiviewcontroller
@end
接下來寫乙個叫做showprogressalert的方法來建立並顯示帶有進度條的alert視窗,其中高亮的部分就是把進度條新增到alertview中:
12
3
4
5
6
7
8
9
10
11
12
13
14
- (
void
)showprogressalert:(
nsstring
*)title withmessage:(
nsstring
*)message
為了讓資料處理的子程序能夠方便地修改進度條的值,再新增乙個簡單的方法:
12
3
- (
void
)updateprogress:(
nsnumber
*)progress
另外,資料處理完畢後,我們還需要讓進度條以及alertview消失,由於之前並沒有儲存alertview的例項,可以通過進度條的superview訪問之:
12
3
4
5
6
7
8
9
10
11
12
13
- (
void
)dismissprogressalert
if (
[progressview_.superview iskindofclass
:[uialertview class]]
) [progressview_ release
];progressview_
= nil;
}
假設處理資料的方法叫processdata,當然它會在乙個單獨的執行緒中執行,下面的片段示意了如何更新進度條狀態,以及最後如何讓它消失。
12
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
:nil
waituntildone
:yes
];// other finalizations.
}
在實際使用中,帶進度條的alert view大概長得是這樣的:
原文:
如何在UIAlertView中顯示進度條
今天這個問題是,在乙個iphone程式中,我要在後台做大量的資料處理,希望在介面上顯示乙個進度條 progress bar 使得使用者了解處理進度。這個進度條應該是在乙個模態的視窗中,使界 今天這個問題是,在乙個iphone程式中,我要在後台做大量的資料處理,希望在介面上顯示乙個進度條 progre...
如何在UIAlertView中顯示進度條
from 今天這個問題是,在乙個iphone程式中,我要在後台做大量的資料處理,希望在介面上顯示乙個進度條 progress bar 使得使用者了解處理進度。這個進度條應該是在乙個模態的視窗中,使介面上其他控制項無法被操作。怎麼用最簡單的方法來實現這個功能?uialertview是乙個現成的模態視窗...
如何在mysql中建立記憶體表 轉
如何在mysql中建立記憶體表 轉 如何建立記憶體表?建立記憶體表非常的簡單,只需註明 engine memory 即可 create table tablename columnname varchar 256 not nul engine memory default charset latin...