? ? ? ?進度條體現(xiàn)了任務執(zhí)行的進度,同活動指示器一樣,也有消除用戶心理等待時間的作用。
? ? ? ?為了模擬真實的任務進度的變化,我們在南昌APP開發(fā)過程中可以引入定時器(NSTimer)。定時器繼承于NSObject類,可在特定的時間間隔后向某對象發(fā)出消息。
? ? ? ?打開Interface Builder,實現(xiàn)按鈕的動作和進度條的輸出口,ViewController中的相關代碼如下:
? ? ? ?class ViewController: UIViewController {
? ? ? ??@IBOutlet weak var myProgressView: UIProgressView!
? ? ? ? @IBAction func downloadProgress(sender: AnyObject) {
? ? ? ? }
? ? ? ?}?
? ? ? ?//ViewController.m文件
? ? ? ?@interface ViewController ()
? ? ? ?……
? ? ? ?@property (weak, nonatomic) IBOutlet UIProgressView *myProgressView;
? ? ? ?- (IBAction)downloadProgress:(id)sender;
? ? ? ?@end?
? ? ? ?其中Download按鈕的實現(xiàn)代碼如下:
? ? ? ?class ViewController: UIViewController {
? ? ? ?@IBOutlet weak var myProgressView: UIProgressView!
? ? ? ?var myTimer: NSTimer!
? ? ? ?@IBAction func downloadProgress(sender: AnyObject) {
? ? ? ?myTimer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self,
? ? ? ?selector: "download", userInfo: nil, repeats: true) ①
? ? ? ?}
? ? ? ?func download() { ②
? ? ? ?self.myProgressView.progress = self.myProgressView.progress + 0.1
? ? ? ?if (self.myProgressView.progress == 1.0) {
? ? ? ?myTimer.invalidate() //停止定時器
? ? ? ?var alert : UIAlertView = UIAlertView(title: "download completed!",
? ? ? ?message: "", delegate: nil, cancelButtonTitle: "OK") ③
? ? ? ?alert.show()
? ? ? ?}
? ? ? ?}
? ? ? ?}?
? ? ? ?- (IBAction)downloadProgress:(id)sender
? ? ? ?{
? ? ?? myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
? ? ? ?target:self
? ? ? ?selector:@selector(download)
? ? ? ?userInfo:nil
? ? ? ?repeats:YES]; ①
? ? ? ?}
? ? ? ?-(void)download{ ②
? ? ? ?self.myProgressView.progress=self.myProgressView.progress+0.1;
? ? ???if (self.myProgressView.progress==1.0) {
? ? ? ?[myTimer invalidate]; //停止定時器
? ? ? ?UIAlertView*alert=[[UIAlertView alloc]initWithTitle:@"download completed!"
? ? ? ?message:@""
? ? ? ?delegate:nil
? ? ? ?cancelButtonTitle:@"OK"
? ? ? ?otherButtonTitles: nil]; ③
? ? ? ?[alert show];
? ? ? ?}
? ? ? ?}
? ? ? ?第①行代碼中使用了NSTimer類。NSTimer是定時器類,它的靜態(tài)方法是scheduledTimerWithTimeInterval:
? ? ? ?target:selector:userInfo:repeats:,可以在給定的時間間隔調用指定的方法,其中第一個參數用于設定間隔時間,第二個參數target用于指定發(fā)送消息給哪個對象,第三個參數selector指定要調用的方法名,相當于一個函數指針,第四個參數userInfo可以給消息發(fā)送參數,第五個參數repeats表示是否重復。
? ? ? ?第②行代碼的download方法是定時器調用的方法,在定時器完成任務后一定要停止它,這可以通過語句myTimer.invalidate()(Objective-C版中是[myTimer invalidate])來實現(xiàn)。