我有一个秒表,它本身就可以正常工作,但是当我从标签栏的另一个视图切换回来时,秒表会做一些奇怪的事情(点击导航视图上的后退按钮可以正常工作)。
当用户从另一个选项卡切换回来时,秒表标签是隐藏的,即使在显示视图时它应该是可见的。
如果当用户点击另一个选项卡并再次点击秒表选项卡时秒表正在运行,则秒表转到 -31:-23.-64,并且停止按钮(应该重置计时器并显示开始按钮)被点击时不会做任何事情。
如果当用户点击另一个选项卡并再次点击秒表选项卡时秒表未运行,则秒表将正常启动,但当用户点击开始按钮时停止按钮不显示。
这是我的代码:
。H:
@interface ViewController : UIViewController {
IBOutlet UIButton *btnStart;
IBOutlet UIButton *btnStop;
IBOutlet UILabel *lblTimer;
NSTimer *stopWatchTimer;
NSDate *stopDate;
NSDate *startDate;
}
@property (strong, nonatomic) IBOutlet UILabel *lblTimer;
- (IBAction)btnStart:(id)sender;
- (IBAction)btnStop:(id)sender;
米:
- (void)updateTimer
{
NSDate *currentDate = [NSDate date];
NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate];
NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"mm:ss.SS"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]];
NSString *timeString=[dateFormatter stringFromDate:timerDate];
lblTimer.text = timeString;
}
- (IBAction)buttonStart:(id)sender {
startDate = [NSDate date];
// Create the stop watch timer that fires every 1ms
stopWatchTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/100.0
target:self
selector:@selector(updateTimer)
userInfo:nil
repeats:YES];
btnStop.hidden = NO;
btnStart.hidden = YES;
}
- (IBAction)buttonStop:(id)sender {
[self updateTimer];
btnStop.hidden = YES;
btnStart.hidden = NO;
[stopWatchTimer invalidate];
stopWatchTimer = nil;
}
请让我知道我能做些什么来解决这个问题,或者是否需要其他任何东西。