2012-07-08 2 views
-1

im делает секундомер, используя Xcode 4 как приложение для одного вида. У меня был вопрос, хотя. когда миллисекунды подсчитывают, они идут бесконечно. я хочу, чтобы они достигают 9, а затем начать снова на 0. я также хочу секунды, чтобы добраться до 59, а затем вернуться к 0. вот мой код в моем файле viewcontroller.m:Секундомерные циклы

- (IBAction)start{ 

    myTicker = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(showActivity) userInfo:nil repeats:YES]; 


    myTicker2 = [NSTimer scheduledTimerWithTimeInterval:.1 target:self selector:@selector(showActivity1) userInfo:nil repeats:YES]; 

    myTicker3 = [NSTimer scheduledTimerWithTimeInterval:60 target:self selector:@selector(showActivity2) userInfo:nil repeats:YES]; 


} 
- (IBAction)stop{ 

    [myTicker invalidate]; 
    [myTicker2 invalidate]; 
    [myTicker3 invalidate]; 
} 
- (IBAction)reset{ 

    time.text = @"00"; 
    time1.text = @"00"; 
    time2.text = @"00"; 
} 


- (void)showActivity{ 

    int currentTime = [time.text intValue]; 
    int newTime = currentTime + 1; 
    time.text = [NSString stringWithFormat:@"%d", newTime]; 

    } 



- (void)showActivity1{ 


    int currentTime1 = [time1.text intValue]; 
    int newTime1 = currentTime1 + 1; 
    time1.text = [NSString stringWithFormat:@"%d", newTime1]; 


} 


- (void)showActivity2{ 


    int currentTime2 = [time2.text intValue]; 
    int newTime2 = currentTime2 = 1; 
    time2.text = [NSString stringWithFormat:@"%d", newTime2]; 



} 

и здесь это мой код в файле .h.

IBOutlet UILabel *time; 
    IBOutlet UILabel *time1; 
    IBOutlet UILabel *time2; 

    NSTimer *myTicker; 
    NSTimer *myTicker2; 
    NSTimer *myTicker3; 
} 

- (IBAction)start; 
- (IBAction)stop; 
- (IBAction)reset; 


- (void)showActivity; 
- (void)showActivity1; 
- (void)showActivity2; 

@end 

любые ответы на вопросы, как это сделать, будем признательны. Благодарю.

ответ

0

В вашем случае я бы использовал только 1 таймер (один миллион секунд) и 4 int vars (часы, минуты, секунды и миллисекунды). А затем по таймеру вы просто проверите

if (milliseconds > 999) 
{ 
    seconds++; 
    milliseconds = 0; 
} 
if (seconds > 59) 
{ 
    minutes++; 
    seconds = 0; 
} 
if (minutes > 59) 
{ 
    hours++; 
    minutes = 0; 
} 

поэтому, делая это, у вас есть один таймер, который управляет всеми вашими переменными. Я написал этот код на лету, чтобы иметь орфографическую ошибку.