2010-06-09 50 views
2

我該如何去添加一個簡單的2分鐘計時器到我的應用程序,幾乎與時鐘應用程序完全相同?我只想讓用戶點擊開始,讓計時器開始顯示從2:00開始倒計時的計時器,並在到達0:00時發出提示音。iPhone爲應用程序添加計時器

回答

2

我已經創建了一些基本代碼用於產生計時器

當用戶選擇啓動定時器

-(void)startTimer{ 

timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(countdown) userInfo:nil repeats:YES];//Timer with interval of one second 
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode]; 

}該方法將被稱爲

計時器被觸發時,該方法將被調用

-(void)countdown{ 

NSLog(@"Countdown : %d:%d",minutesValue,secondsValue);//Use this value to display on your UI Screen 
[self countdownSeconds];//Decrement the time by one second 

}

此方法將被稱作一分鐘

-(void)countdownMinutes{ 

if(minutesValue == 0) 
    [self stopTimer]; 
else 
    --minutesValue; 

}

該方法將被調用由遞減時間遞減時間1秒

-(void)countdownSeconds{ 

if(secondsValue == 0) 
{ 
    [self countdownMinutes]; 
    secondsValue = 59; 
} 
else 
{ 
    --secondsValue; 
} 

}

當計時器到零時調用此方法

-(void)stopTimer{ 

[timer invalidate]; //Stops the Timer and removes from runloop 
NSLog(@"Countdown completed"); // Here u can add ur beep code to notify 

}

希望的代碼可以幫助,和一個重要的 「計時器」, 「minutesValue」 和 「secondsValue」 的實例變量。

1

我昨天寫了這篇文章,可能會對您有所幫助。這是一種從NSTimeInterval中抽出小時,分鐘和秒的方法(這是一個結構double,表示兩次之間的秒數 - 在本例中爲NSDate self.expires[NSDate date],即,現在)。這發生在自定義表格單元視圖內。最後,我們更新了三個UILabels上的小秒錶顯示器。

-(void)updateTime 
{ 
    NSDate *now = [NSDate date]; 
    NSTimeInterval interval = [self.expires timeIntervalSinceDate:now]; 
    NSInteger theHours = floor(interval/3600); 
    interval = interval - (theHours * 3600); 
    NSInteger theMinutes = floor(interval/60); 
    interval = interval - (theMinutes * 60); 
    NSInteger theSeconds = floor(interval); 

    NSLog(@"%d hours, %d minutes, %d seconds", theHours, theMinutes, theSeconds); 

    self.hours.text = [NSString stringWithFormat:@"%02d", theHours]; 
    self.minutes.text = [NSString stringWithFormat:@"%02d", theMinutes]; 
    self.seconds.text = [NSString stringWithFormat:@"%02d", theSeconds]; 

} 

然後在其他地方,我設置了一個計時器,每秒調用一次該方法。定時器不能保證在確切的特定時間運行,這就是爲什麼你不能只計數一些靜態變量,或者你隨時間流逝積累錯誤的風險。相反,你實際上不得不在每次打電話時都花費新的時間。

確保您保持一個指向您的計時器的指針,並在您的視圖控制器消失時使其無效!