在iPhone中创build一个秒表

我正在尝试创build一个简单的秒表。 我提到这个网站( http://www.apptite.be/tutorial_ios_stopwatch.php )做这个应用程序。 当我点击开始button,我得到-596:-31:-23:-648秒表不运行。

代码如下所示:

ViewController.h

#import <UIKit/UIKit.h> @interface ViewController : UIViewController{ UILabel *lbl; NSTimer *stopTimer; NSDate *startDate; } @property (strong,nonatomic) IBOutlet UILabel *lbl; -(IBAction)startPressed:(id)sender; -(IBAction)stopPressed:(id)sender; -(void)updateTimer; @end 

ViewController.m

 #import "ViewController.h" @interface ViewController () @end @implementation ViewController @synthesize lbl; - (void)viewDidLoad { [super viewDidLoad]; lbl.text = @"00.00.00.000"; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } -(IBAction)startPressed:(id)sender{ if (stopTimer == nil) { stopTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/10.0 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES]; } } -(IBAction)stopPressed:(id)sender{ [stopTimer invalidate]; stopTimer = nil; //[self updateTimer]; } -(void)updateTimer{ NSDate *currentDate = [NSDate date]; NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate]; NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"HH:mm:ss.SSS"]; [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]]; NSString *timeString=[dateFormatter stringFromDate:timerDate]; lbl.text = timeString; } @end 

需要一些解决错误的指导。 不知道错误在哪里。 欣赏任何帮助…

解决了错误:

ViewController.h

 #import <UIKit/UIKit.h> @interface ViewController : UIViewController{ UILabel *lbl; NSTimer *stopTimer; NSDate *startDate; BOOL running; } @property (strong,nonatomic) IBOutlet UILabel *lbl; -(IBAction)startPressed:(id)sender; -(IBAction)resetPressed:(id)sender; -(void)updateTimer; @end 

ViewController.m

 #import "ViewController.h" @interface ViewController () @end @implementation ViewController @synthesize lbl; - (void)viewDidLoad { [super viewDidLoad]; lbl.text = @"00.00.00.000"; running = FALSE; startDate = [NSDate date]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } -(IBAction)startPressed:(id)sender{ if(!running){ running = TRUE; [sender setTitle:@"Stop" forState:UIControlStateNormal]; if (stopTimer == nil) { stopTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/10.0 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES]; } }else{ running = FALSE; [sender setTitle:@"Start" forState:UIControlStateNormal]; [stopTimer invalidate]; stopTimer = nil; } } -(void)updateTimer{ NSDate *currentDate = [NSDate date]; NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate]; NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"HH:mm:ss.SSS"]; [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]]; NSString *timeString=[dateFormatter stringFromDate:timerDate]; lbl.text = timeString; } -(IBAction)resetPressed:(id)sender{ [stopTimer invalidate]; stopTimer = nil; startDate = [NSDate date]; lbl.text = @"00.00.00.000"; running = FALSE; } @end 

对代码进行了轻微的改动。但是现在它正在正常工作。

我创build了一个具有暂停/恢复function的简单秒表。 它使用两个NSDatevariables来跟踪暂停之间的时间:

 NSTimeInterval secondsBetween = [pause_date timeIntervalSinceDate:start_date]; start_date = [NSDate dateWithTimeIntervalSinceNow:(-1)*secondsBetween]; 

看看这里的示例项目: https : //github.com/kevinpk/NSStopwatch