iPhone: проблемы с обратным отсчетом (формат 00:00:00)

Я использую UISlider, чтобы получить ввод в минутах (диапазон 1–120) для таймера обратного отсчета и показать его на метке, подобной этой «01:30:00». i) Я хотел бы, чтобы пользователь устанавливал таймер (используя ползунок), чтобы настроить часы и минуты, но НЕ секунды. Секунды должны начать отсчет ПОСЛЕ того, как пользователь запустит обратный отсчет. Как я могу это сделать? ii) у меня возникли проблемы с обновлением метки обратного отсчета. Может ли кто-нибудь предложить правильный код?

-(IBAction)setTime:(id)sender {
totaltime=timeSlider.value;
hours = totaltime / 60;
minutes = (totaltime % 3600) % 60;
seconds = (totaltime % 3600) * 60;
[countDownLabel setFont:[UIFont fontWithName:@"DBLCDTempBlack" size:45]];
countDownLabel.text = [NSString stringWithFormat:@"%.2i:%.2i:%.2i", hours, minutes, seconds]; }

 -(void)countdown {
 totaltime -=1; 


if(minutes == 0) { [timer invalidate]; }    
 [countDownLabel setFont:[UIFont fontWithName:@"DBLCDTempBlack" size:45]];
 countDownLabel.text = [NSString stringWithFormat:@"%.2i:%.2i:%.2i", hours, minutes, seconds]; }
-(IBAction)fade {
timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                        target:self selector:@selector (countdown)  userInfo:nil repeats:YES]; }

person Pantelis Proios    schedule 12.10.2011    source источник


Ответы (2)


Вы уменьшаете totalTime, но не пересчитываете часы, минуты и секунды. Я так понимаю, когда вы начинаете обратный отсчет, ничего не меняется? Вам нужно пересчитать часы, минуты и секунды в вашем методе countdown.

person jrturton    schedule 12.10.2011
comment
Разве часы, мин, секунды не должны пересчитываться каждый раз, когда я уменьшаю общее время на единицу (общее время-= 1;) ??? - person Pantelis Proios; 12.10.2011
comment
В основном totaltime=timeSlider.value; сбрасывает обратный отсчет, но я не знаю, как этого избежать... - person Pantelis Proios; 12.10.2011
comment
Что касается вашего первого комментария, да, это моя точка зрения. Во-вторых, не называйте этот код. Вы устанавливаете общее время с помощью ползунка только при первоначальной настройке будильника. - person jrturton; 12.10.2011

person    schedule
comment
Это все еще не обновляет метку обратного отсчета. Также то, как я установил секунды, неверно. Он показывает 4-значный номер. - person Pantelis Proios; 12.10.2011
comment
Хорошо, после удаления totaltime=timeSlider.value; под -(void) обратный отсчет начался, однако, не зная, как рассчитать секунды, я не могу правильно аннулировать свой таймер. ПОЖАЛУЙСТА ПОМОГИ!!!! - person Pantelis Proios; 12.10.2011
comment
Хорошо, я понял, как рассчитать часы, мин, сек. Большое спасибо! - person Pantelis Proios; 12.10.2011