轉 如何在UIAlertView中顯示進度條

2021-09-01 02:04:24 字數 3145 閱讀 2288

今天這個問題是,在乙個iphone程式中,我要在後台做大量的資料處理,希望在介面上顯示乙個進度條(progress bar)使得使用者了解處理進度。這個進度條應該是在乙個模態的視窗中,使界

今天這個問題是,在乙個iphone程式中,我要在後台做大量的資料處理,希望在介面上顯示乙個進度條(progress bar)使得使用者了解處理進度。這個進度條應該是在乙個模態的視窗中,使介面上其他控制項無法被操作。怎麼用最簡單的方法來實現這個功能?uialertview是乙個現成的模態視窗,如果能把進度條嵌入到它裡面就好了。

以下內容適用於ios 2.0+。

我們知道,如果要顯示乙個alert視窗(比如用來顯示錯誤或警告資訊、詢問使用者是否確認某操作等等),只要簡單地建立乙個uialertview物件,再呼叫其show方法即可。示意**如下:

1

2

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類中新增成員變數:

1

2

3

4

5

6

7

8

9

//  mysampleviewcontroller.h

#import

@inte***ce mysampleviewcontroller 

: uiviewcontroller 

@end

接下來寫乙個叫做showprogressalert的方法來建立並顯示帶有進度條的alert視窗,其中高亮的部分就是把進度條新增到alertview中:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

-  (

void

)showprogressalert:(

nsstring

*)title withmessage:(

nsstring

*)message 

為了讓資料處理的子程序能夠方便地修改進度條的值,再新增乙個簡單的方法:

1

2

3

-  (

void

)updateprogress:(

nsnumber

*)progress 

另外,資料處理完畢後,我們還需要讓進度條以及alertview消失,由於之前並沒有儲存alertview的例項,可以通過進度條的superview訪問之:

1

2

3

4

5

6

7

8

9

10

11

12

13

-  (

void

)dismissprogressalert 

if  (

[progressview_.superview iskindofclass

:[uialertview class]]

) [progressview_ release

];progressview_ 

= nil;

}

假設處理資料的方法叫processdata,當然它會在乙個單獨的執行緒中執行,下面的片段示意了如何更新進度條狀態,以及最後如何讓它消失。

1

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

: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...