iPhone SDK: таймер обратного отсчета - PullRequest
3 голосов
/ 18 сентября 2011

Пожалуйста, помогите.Я хочу создать таймер обратного отсчета, используя iphone SDK.У меня есть текущее время:

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

и время (я) из базы данных.Например: currentTime - 19:18:30, время из базы данных - 19:20:01.Таким образом, таймер должен быть установлен на 0:01:31 и начать обратный отсчет.При достижении 0:00:00 возьмите другое время из базы данных (например, 19:21:00), установите таймер (0:00:59) и снова начните обратный отсчет.Когда достигнете 0:00:00, возьмите ... Таймер должен отображаться UILabel.

Пожалуйста, помогите.Это начинает сводить меня с ума.:)

1 Ответ

8 голосов
/ 18 сентября 2011

попробуйте это. Я только что написал только необходимые методы для решения. Не забудьте реализовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...