您好我的应用程序中有秒表。
我有一个带秒表的启动,停止和重置按钮。
停止和重置按钮起作用
开始有点像。
当用户首次点击开始按钮时,它会启动秒表。如果他们点击停止按钮,然后单击开始按钮,它会重新启动秒表。
我缺少什么(下面列出的代码)?
·H
IBOutlet UILabel *stopWatchLabel;
NSTimer *stopWatchTimer; // Store the timer that fires after a certain time
NSDate *startDate; // Stores the date of the click on the start button
@property (nonatomic, retain) IBOutlet UILabel *stopWatchLabel;
- (IBAction)onStartPressed;
- (IBAction)onStopPressed;
- (IBAction)onResetPressed;
- (void)updateTimer
.m
- (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];
stopWatchLabel.text = timeString;
}
- (IBAction)onStartPressed {
startDate = [NSDate date];
// Create the stop watch timer that fires every 10 ms
stopWatchTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/10.0
target:self
selector:@selector(updateTimer)
userInfo:nil
repeats:YES];
}
- (IBAction)onStopPressed {
[stopWatchTimer invalidate];
stopWatchTimer = nil;
[self updateTimer];
}
- (IBAction)onResetPressed {
stopWatchLabel.text = @"00:00:00:000";
}
任何帮助都会很棒。
干杯
答案 0 :(得分:1)
在上面的代码中,您将存储启动 - 停止操作期间经过的时间。为此,您需要在类级别NSTimeInterval totalTimeInterval
变量。最初或按下复位按钮时,其值将设置为0.在updateTimer
方法中,您需要替换以下代码。
NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate];
totalTimeInterval += timeInterval;
NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:totalTimeInterval ];
谢谢,
答案 1 :(得分:0)
timeInterval会增加,如1,2,3,4,5等。
totalTimeInterval = totalTimeInterval + timeInterval -> 0 = 0 + 1
下次调用updateTimer函数时,totalTimeInterval将为1 = 1 + 2,因此totalTimeInterval将为3。
因此,如果我们显示totalTimeInterval,则秒数将为1,3,6,....等等。
首先,您需要在班级中使用NSTimeInterval totalTimeInterval和NSTimeInterval timeInterval变量
updateTimer方法,您需要替换以下代码。
timeInterval = [currentDate timeIntervalSinceDate:startDate]; timeInterval += totalTimeInterval; NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];
然后是onStopPressed方法和以下代码。
totalTimeInterval = timeInterval;
感谢。