iPhone SDK : Countdown timer

标签 iphone objective-c cocoa-touch timer

请帮忙。我想使用 iphone sdk 创建倒数计时器。我有当前时间:

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

来自数据库的时间。例如:当前时间是 19:18:30,数据库时间是 19:20:01。所以计时器应该设置为 0:01:31 并开始倒计时。当到达 0:00:00 时,从数据库中获取另一个时间(例如:19:21:00),设置计时器(0:00:59)并再次开始倒计时。当到达 0:00:00 时,取... 计时器应由 UILabel 显示。

请帮忙。它开始让我发疯。 :)

最佳答案

试试这个。我刚刚只编写了解决方案所需的方法。不要忘记实现 dealloc 等。

倒计时 View Controller .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

关于iPhone SDK : Countdown timer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7463163/

相关文章:

iphone - 使用 addSubview 添加时,使 View 调整到其父级

ios - UITableView scrollToRowAtIndexPath 滚动到底部有时会使我的表格消失,为什么?

iphone - UITableViewCell,出队和自动释放?

iphone - 如何将单元格中的第三个值传递给另一个 TableView Controller

iphone - ASIFormDataRequest : image post to . 网络服务

ios - UITableViewCell 图像从 url 加载

ios - NSBatchDeleteRequest留下不良关系

ios - 填充时从 Collection View 中选择一个单元格

iphone - 后端和 Objective-C/Cocoa 之间通信的格式

ios - 如何在允许设置 Root View Controller 的同时调整 UINavigationBar 的高度?