2013-11-10 2 views
1

Что я хочу - это приложение, которое обращает внимание на то же время каждый день , например, код сообщает ему обратный отсчет до определенного времени, которое закодировано в приложении и не может быть изменено с помощью ввода пользователем , что у меня есть код, чтобы сделать его обратным отсчетом к конкретному времени и дате, однако это не происходит в повседневном повторении , так что я ищу, так что сегодня он будет обратный отсчет до 22:02, а завтра это будет также обратный отсчет до 22:02. Я пробовал везде google, youtube, но не могу найти его нигде. Я также добавлю свой код, чтобы, надеюсь, вы могли сказать мне, где я ошибаюсь.Выполнение обратного отсчета до времени каждый день

мой взгляд controller.h

@interface ViewController : UIViewController { 

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

} 

@end 

мой взгляд controller.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]; 
} 
+0

Как это связано с тем, что вы используете Xcode 5? Будет ли вопрос другим, если вы использовали 'emacs' и' make' для компиляции и развертывания вашего приложения? Наверное, нет. –

ответ

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]; 
    } 
} 
Смежные вопросы