私はそれ自体でうまく機能しているストップウォッチを持っていますが、タブバーから別のビューから戻ると、ストップウォッチはいくつかの奇妙なことをします(ナビゲーションビューの戻るボタンをタップするとうまくいきます)。
ストップウォッチラベルは、ビューを表示しているときに表示されているはずですが、ユーザーが他のタブから戻ると非表示になります。
ユーザーが他のタブをタップしてストップウォッチタブをもう一度タップしたときにストップウォッチが実行されている場合、ストップウォッチは-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;
.m:
- (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;
}
これを修正するために何ができるか、または他に何か必要な場合はお知らせください。