如何在UIAlertView中顯示進度條

2021-06-05 21:20:06 字數 2935 閱讀 4916

from:

今天這個問題是,在乙個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

:nilcancelbuttontitle

:@"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

:nilwaituntildone

:yes];

// other finalizations.

}

在實際使用中,帶進度條的alert view大概長得是這樣的:

原文:

轉 如何在UIAlertView中顯示進度條

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

如何在UIAlertView中顯示進度條

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

如何在程式中延時

方法一 使用sleep函式,如延時2秒,用sleep 2000 方法二 使用sleep函式的不利在於延時期間不能處理其他的訊息,如果時間太長,就好象宕機一樣,利用coledatetime類和coledatetimespan類實現延時就不會出現那樣的問題 coledatetime start time...