1

我想要的是一个每天倒计时到同一时间的应用程序,例如代码告诉它倒计时到某个时间,该时间编码到应用程序中并且不能通过用户输入进行更改。我所拥有的是使其倒计时到特定时间和日期的代码,但这不是每天重复的,所以我正在寻找的是,今天它会倒计时到 22:02,明天它也会倒计时到22:02。我在任何地方都试过谷歌、youtube,但在任何地方都找不到。我还将添加我的代码,希望您能告诉我哪里出错了。

我的视图控制器.h

@interface ViewController : UIViewController {

NSDate *destinationDate;
IBOutlet UILabel *datelabel;
NSTimer *timer;

}

@end

我的视图控制器.m

-(void) updateLabel {

NSCalendar *calender = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
int units = NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *components = [calender components:units fromDate:[NSDate date] toDate:destinationDate options:0];
[datelabel setText:[NSString stringWithFormat:@"%d%c: %d%c", [components minute], ' ', [components second], ' ']];
}


- (void)viewDidLoad {
[super viewDidLoad];

destinationDate = [NSDate dateWithTimeIntervalSince1970:1384121134];
timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateLabel) userInfo:nil repeats:YES];
}
4

1 回答 1

0

当您最终达到您想要的日期和时间时,您可以启动一个新计时器(并杀死旧计时器),或者只是更新destinationDate. 例如,在 中updateLabel,您可以这样做:

-(void) updateLabel
{
    NSCalendar *calender = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    int units = NSMinuteCalendarUnit | NSSecondCalendarUnit;
    NSDateComponents *components = [calender components:units fromDate:[NSDate date] toDate:destinationDate options:0];
    [datelabel setText:[NSString stringWithFormat:@"%d%c: %d%c", [components minute], ' ', [components second], ' ']];
    if (([components minute] <= 0) && ([components second] <= 0))
    {
        // Set it for again for 24 hours from now - 24 hours * 60 min/hr * 60 secs/min
        destinationDate = [destinationDate dateByAddingTimeInterval:24.0 * 60.0 * 60.0];
    }
}
于 2013-11-11T00:42:52.873 回答