2012-12-31 31 views
0

我有一個自己正常工作的秒錶,但是當我從標籤欄的另一個視圖切換回來時,秒錶會執行一些奇怪的操作(點按後退按鈕導航視圖正常工作)。從另一個選項卡切換回來後秒錶搞亂了

  1. 當用戶切換從其他標籤背面的秒錶標籤被隱藏,即使示出了視圖時,它應該是可見的。

  2. 如果秒錶正在運行,當用戶點擊另一個選項卡並再次點擊秒錶選項卡時,秒錶將轉到-31:-23.-64和停止按鈕(它應該重設定時器和顯示開始按鈕)在點擊時不會執行任何操作。

  3. 如果當用戶點擊另一個選項卡並再次點擊秒錶選項卡時秒錶沒有運行,則秒錶將正常啓動,但當用戶點擊啓動按鈕時,停止按鈕不會顯示。

這裏是我的代碼:

.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; 
} 

請讓我知道我能做些什麼來解決這個問題,或者如果其他任何東西都需要。

+0

你在viewwill的stopwatch的viewController方法中做什麼? –

+0

不,沒有'viewDidAppear',如果有的話? –

+0

沒有我說的是你的問題可能是因爲viewwillappear中的某些屬性chnage。由於當您更改選項卡時始終會調用此功能 –

回答

1

首先,它看起來像startDate搞砸了。正在調用init。它應該可能只是[NSDate date]

至於沒有出現的看法...在計算日期後,timer.text正在設置的東西。什麼是計時器?你確定不應該是timer.title?當你這樣做後,你可能需要[timer setNeedsDisplay]以確保文本在控件上更新,如果這是你想要的。

如果文本仍然混亂,請儘量不要頻繁更新。也許每隔十秒鐘,看看文字是否表現更好。

+0

好吧,我只是更新了我的代碼,以反映'timer'是一個標籤,並添加了.h文件來顯示我的其他對象。我也將'[[NSDate date] init]'改爲'[NSDate date]',並且測試了'[lblTimer setNeedsDisplay]'和更新定時器的次數,但沒有發生任何不同。有任何想法嗎? –

+0

對不起,剛纔發現了這個問題......我在'viewWillDisappear'方法中設置了太多東西到零。儘管感謝您的幫助。 –

相關問題