2011-09-18 93 views
3

請幫忙。我想用iphone sdk創建倒數計時器。我有當前時間:iPhone sdk:倒數計時器

NSDate *today = [NSDate date]; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"HH:mm"]; 
NSString *currentTime = [dateFormatter stringFromDate:today]; 
[dateFormatter release]; 

和時間(s)從數據庫中。例如:currentTime是19:18:30,來自數據庫的時間是19:20:01。所以定時器應該設置爲0:01:31並開始倒計時。到達0:00:00時,再從數據庫中取出一些時間(例如19:21:00),重新設置計時器(0:00:59)和星形倒計時。當到達0:00:00時,採取...定時器應該由UILabel顯示。

請幫忙。它開始讓我發瘋。 :)

+0

什麼是獲取當前的日期,而不僅僅是創建一個NSTimer與任何時間的目的你要。 – Jumhyn

回答

8

試試這個。我只寫了解決方案所需的方法。不要忘記實現的dealloc等

CountdownViewController.h

@interface CountdownViewController : UIViewController {  
     IBOutlet UILabel *clockLabel; 
     NSDate *databaseDate; 
     NSTimer *timer; 
    } 

    @property(nonatomic, retain) IBOutlet UILabel *clockLabel; 
    @property(nonatomic, retain) NSDate *databaseDate; 

    @end 

CountdownViewController.m

@implementation CountdownViewController 

@synthesize clockLabel; 
@synthesize databaseDate; 

- (void) showClock { 
    NSTimeInterval remainingSec = [databaseDate timeIntervalSinceNow]; 
    if (!timer || remainingSec <= 0) { 
     [timer invalidate]; 
     timer = nil; 
     // getting time from database 
     self.databaseDate = [NSDate dateWithTimeIntervalSinceNow:20.0]; 
     remainingSec = [databaseDate timeIntervalSinceNow]; 
     timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self 
               selector:@selector(showClock) 
               userInfo:nil 
               repeats:YES]; 
    } 

    NSInteger hours = remainingSec/3600; 
    NSInteger remainder = ((NSInteger)remainingSec)% 3600; 
    NSInteger minutes = remainder/60; 
    NSInteger seconds = remainder % 60; 

    clockLabel.text = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds]; 
} 

@end 
+0

嗨。感謝您提供快速的答案和完美的解決方案! – Tom