2011-09-18 94 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