我有一個自己正常工作的秒錶,但是當我從標籤欄的另一個視圖切換回來時,秒錶會執行一些奇怪的操作(點按後退按鈕導航視圖正常工作)。從另一個選項卡切換回來後秒錶搞亂了
當用戶切換從其他標籤背面的秒錶標籤被隱藏,即使示出了視圖時,它應該是可見的。
如果秒錶正在運行,當用戶點擊另一個選項卡並再次點擊秒錶選項卡時,秒錶將轉到-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;
}
請讓我知道我能做些什麼來解決這個問題,或者如果其他任何東西都需要。
你在viewwill的stopwatch的viewController方法中做什麼? –
不,沒有'viewDidAppear',如果有的話? –
沒有我說的是你的問題可能是因爲viewwillappear中的某些屬性chnage。由於當您更改選項卡時始終會調用此功能 –