Проблема состоит в том, чтобы остановить NSTimer, по какой-то причине [Timer invalidate] просто не работает...
Возможно, мои глаза полны мыла, но не могут понять, почему таймер не остановился на 0, но перейдите в обратный счет -1, -2, -3 и так далее... (((
Я использую числа эпох как дату назначения. Еще одна вещь - моя кнопка "остановка IBAction" с [Timer invalidate] работает просто отлично - когда я нажимаю ее на таймер симулятора, останавливается...
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
Timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateLabel) userInfo:nil repeats:YES];
}
- (IBAction) start {
Timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateLabel) userInfo:nil repeats:YES];
}
- (IBAction) stop {
[Timer invalidate];
Timer = nil;
}
-(void)updateLabel {
NSCalendar *calender = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
int units = NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *components = [calender components:units fromDate:[NSDate date] toDate:destinationDate options:0];
[dateLabel setText:[NSString stringWithFormat:@"%d%c %d%c %d%c %d%c", [components day], 'd', [components hour], 'h', [components minute], 'm', [components second], 's']];
destinationDate = [NSDate dateWithTimeIntervalSince1970:1355299710];
if (!destinationDate) {
[Timer invalidate];
Timer = nil;
}
}