2012-02-13 1 views
5

Как я могу изменить этот код, чтобы он имеет HH: MM: SS (часы, минуты, секунды,Использование NSTimer для HH: MM: SS?

И Можете ли вы сказать мне, если мне нужно добавить код в .h или .m так я известный, который один

на данный момент он идет вверх, как 1, 2, 3, 4 и т.д.

привет ребята просто, чтобы вы знали, что я буду приманкой в ​​любительском бы скопировать и прошлое, так что я знал, что вы имеете в виду спасибо

вид С уважением

Paul

.h

@interface FirstViewController : UIViewController { 

    IBOutlet UILabel *time; 

    NSTimer *myticker; 

    //declare baseDate 
    NSDate* baseDate; 

} 

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

@end 

.m

#import "FirstViewController.h" 

@implementation FirstViewController 

-(IBAction)start { 
    [myticker invalidate]; 
    baseDate = [NSDate date]; 
    myticker = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(showActivity) userInfo:nil repeats:YES]; 
} 

-(IBAction)stop;{ 

    [myticker invalidate]; 
    myticker = nil; 
} 
-(IBAction)reset;{ 

    time.text = @"00:00:00"; 
} 
-(void)showActivity { 
    NSTimeInterval interval = [baseDate timeIntervalSinceNow]; 
    NSUInteger seconds = ABS((int)interval); 
    NSUInteger minutes = seconds/60; 
    NSUInteger hours = minutes/60; 
    time.text = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes%60, seconds%60]; 
} 
+0

Если вы хотите измерить время, я предлагаю вам использовать класс NSDate вместо увеличения некоторой произвольной целочисленной переменной. – lawicko

+0

Возможный дубликат [NSTimer - Секундомер] (http://stackoverflow.com/questions/3180899/nstimer-stopwatch) – Caleb

+0

где я могу поставить NSdate ?? замените ли я все NSTimer? –

ответ

7

Во-первых, объявить baseDate переменную в вашей FirstViewController.h, как это:

@interface FirstViewController : UIViewController { 

    IBOutlet UILabel *time; 

    NSTimer *myticker; 

    //declare baseDate 
    NSDate* baseDate; 
} 

Тогда, в FirstViewControl ler.m метод запуска добавить baseDate = [NSDate date] так:

-(IBAction)start { 
    [myticker invalidate]; 
    baseDate = [NSDate date]; 
    myticker = [NSTimer scheduledTimerWithTimeInterval:.01 target:self selector:@selector(showActivity) userInfo:nil repeats:YES]; 
} 

После этого, измените ваш showActivity способ выглядеть следующим образом:

-(void)showActivity { 
    NSTimeInterval interval = [baseDate timeIntervalSinceNow]; 
    double intpart; 
    double fractional = modf(interval, &intpart); 
    NSUInteger hundredth = ABS((int)(fractional*100)); 
    NSUInteger seconds = ABS((int)interval); 
    NSUInteger minutes = seconds/60; 
    NSUInteger hours = minutes/60; 
    time.text = [NSString stringWithFormat:@"%02d:%02d:%02d:%02d", hours, minutes%60, seconds%60, hundredth]; 
} 

Также обратите внимание, что вам придется изменить интервал значение для вашего таймера, в противном случае ваш ярлык будет обновляться только один раз в секунду.

+0

привет вы могли бы добавить его в мой код выше, потому что я нахожу это трудно понять ?? объявлять переменную счисления ???? спасибо –

+0

Какой шаг вам трудно понять? – lawicko

+0

где бои я устанавливаю baseDate = [NSDate date]; в моем коде и - (void) showActivity { NSTimeInterval interval = [baseDate timeIntervalSinceNow]; NSUInteger seconds = ABS ((интервал)); NSUInteger минут = секунды/60; Часы NSUInteger = минуты/60; time.text = [NSString stringWithFormat: @ "% 02d:% 02d:% 02d", часы, минуты% 60, секунды% 60]; } –

 Смежные вопросы

  • Нет связанных вопросов^_^