#objective_c #uitableview
Есть UIVew c кнопкой старт, UILabel в который записывается текущее время и uitableView, в котором время сохраняется (как простой стандартный таймер) Проблема в том, что при скролле таблицы - таймер замерзает, как сделать чтобы они работали синхронно ? имею такой таймер - (IBAction)startTimer { _startButton.hidden = YES; _stopButton.hidden = NO; isRun = YES; UIBackgroundTaskIdentifier bgTask = UIBackgroundTaskInvalid; UIApplication *app = [UIApplication sharedApplication]; bgTask = [app beginBackgroundTaskWithExpirationHandler:^{ [app endBackgroundTask:bgTask]; }]; myTimer = [NSTimer scheduledTimerWithTimeInterval:0.01f target:self selector:@selector(tick) userInfo:nil repeats:YES]; } и функию - (void)tick { _timeSot++; sot++; if (_timeSot > 99) { _timeSot = 0; _sec++; } if (_sec > 59) { _sec = 0; _min++; } //_min = _sec / 60; NSString *sotStr; if (_timeSot < 10) { sotStr = [NSString stringWithFormat:@"0%d", _timeSot]; } else { sotStr = [NSString stringWithFormat:@"%d", _timeSot]; } NSString *secStr; if (_sec < 10) { secStr = [NSString stringWithFormat:@"0%d", _sec]; } else { secStr = [NSString stringWithFormat:@"%d", _sec]; } NSString *minStr; if (_min < 10) { minStr = [NSString stringWithFormat:@"0%d", _min]; } else { minStr = [NSString stringWithFormat:@"%d", _min]; } myTime = [NSString stringWithFormat:@"%@:%@:%@", minStr, secStr, sotStr]; if (sot >= ([[[_exerises objectAtIndex:_indexExercise] objectForKey:@"timeWorkOutExerciseClient"] intValue] * 100)) { [self stopTimer]; [self sendNotification]; } [_timeLabel setText:myTime]; }
Ответы
Ответ 1
Проблема решена: [[NSRunLoop mainRunLoop] addTimer:myTimer forMode:NSRunLoopCommonModes];
Комментариев нет:
Отправить комментарий