? ? ? ?進(jìn)度條體現(xiàn)了任務(wù)執(zhí)行的進(jìn)度,同活動(dòng)指示器一樣,也有消除用戶心理等待時(shí)間的作用。
? ? ? ?為了模擬真實(shí)的任務(wù)進(jìn)度的變化,我們在南昌APP開發(fā)過程中可以引入定時(shí)器(NSTimer)。定時(shí)器繼承于NSObject類,可在特定的時(shí)間間隔后向某對象發(fā)出消息。
? ? ? ?打開Interface Builder,實(shí)現(xiàn)按鈕的動(dòng)作和進(jìn)度條的輸出口,ViewController中的相關(guān)代碼如下:
? ? ? ?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按鈕的實(shí)現(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() //停止定時(shí)器
? ? ? ?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]; //停止定時(shí)器
? ? ? ?UIAlertView*alert=[[UIAlertView alloc]initWithTitle:@"download completed!"
? ? ? ?message:@""
? ? ? ?delegate:nil
? ? ? ?cancelButtonTitle:@"OK"
? ? ? ?otherButtonTitles: nil]; ③
? ? ? ?[alert show];
? ? ? ?}
? ? ? ?}
? ? ? ?第①行代碼中使用了NSTimer類。NSTimer是定時(shí)器類,它的靜態(tài)方法是scheduledTimerWithTimeInterval:
? ? ? ?target:selector:userInfo:repeats:,可以在給定的時(shí)間間隔調(diào)用指定的方法,其中第一個(gè)參數(shù)用于設(shè)定間隔時(shí)間,第二個(gè)參數(shù)target用于指定發(fā)送消息給哪個(gè)對象,第三個(gè)參數(shù)selector指定要調(diào)用的方法名,相當(dāng)于一個(gè)函數(shù)指針,第四個(gè)參數(shù)userInfo可以給消息發(fā)送參數(shù),第五個(gè)參數(shù)repeats表示是否重復(fù)。
? ? ? ?第②行代碼的download方法是定時(shí)器調(diào)用的方法,在定時(shí)器完成任務(wù)后一定要停止它,這可以通過語句myTimer.invalidate()(Objective-C版中是[myTimer invalidate])來實(shí)現(xiàn)。